A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

2008.2 Triggers Renata Viegas. 2008.2 Gatilhos (Triggers) Utilizados para implementar regras de negócio da aplicação Sua principal aplicação é a criação.

Apresentações semelhantes


Apresentação em tema: "2008.2 Triggers Renata Viegas. 2008.2 Gatilhos (Triggers) Utilizados para implementar regras de negócio da aplicação Sua principal aplicação é a criação."— Transcrição da apresentação:

1 Triggers Renata Viegas

2 Gatilhos (Triggers) Utilizados para implementar regras de negócio da aplicação Sua principal aplicação é a criação de restrições e consistências de acesso ao banco de dados

3 Gatilhos (Triggers) Exemplo: Ao invés de restringir contas com saldos negativos, podemos querer ativar uma ação que automaticamente inicia um empréstimo para aquela conta

4 Gatilhos (Triggers) Um trigger é um conjunto de comandos SQL que é automaticamente disparado quando um comando INSERT, UPDATE ou DELETE é executado em uma tabela.

5 Gatilhos (Triggers) Um trigger é uma regra do tipo E_C_A: – E: Evento – C: Condição a ser satisfeita na presença do evento E – A: Ação a ser tomada caso a condição C seja satisfeita

6 Gatilhos (Triggers) Voltando ao nosso exemplo: – Ao invés de restringir contas com saldos negativos, podemos querer ativar uma ação que automaticamente inicia um empréstimo para aquela conta. Evento: operação de modificação do saldo Condição: se saldo < 0 Ação: Criar um empréstimo para conta

7 Gatilhos (Triggers) Composição de um trigger – Um nome: único para cada banco de dados – A maneira: um comando INSERT, UPDATE ou DELETE – As instruções: Um bloco de comandos SQL Vínculo de um trigger – Os gatilhos (triggers) são sempre vinculados a uma determinada tabela – Quando uma tabela é removida, todos os gatilhos relacionados serão excluídos automaticamente.

8 Gatilhos no SQL Server Funcionamento – Quando um trigger é executado, o SQL Server cria duas tabelas temporárias que ficam residentes na memória e existem apenas enquanto o trigger estiver ativo. – As duas tabelas contêm a mesma estrutura da tabela de base onde o trigger foi criado. Essas duas tabelas recebem o nome de INSERTED e DELETED. Você pode consultar dados nessa tabela com o SELECT, da mesma forma que uma tabela real

9 Gatilhos no SQL Server Funcionamento (cont.) – Quando um comando INSERT é executado, o registro criado será copiado para a tabela de base e para a tabela INSERTED. – Quando um comando UPDATE é executado, o registro original (registro antigo) é armazenado na tabela DELETED e o registro modificado (registro atual) é armazenado na tabela de base e na tabela INSERTED. – Quando um comando DELETE é executado, o registro excluído é armazenado na tabela DELETED.

10 Gatilhos no SQL Server Os momentos de disparo são definidos para atuarem quando o respectivo comando de modificação for executado – Um trigger de INSERT não vai ser disparado quando a tabela sofre um UPDATE

11 Gatilhos (Triggers) Sintaxe :Sintaxe : CREATE TRIGGER ON FOR [INSERT][,][UPDATE][,][DELETE] AS

12 Gatilhos (Triggers) Create Table ExemploTrigger ( Id Int Campo Varchar(10))

13 Gatilhos (Triggers) Create Trigger Exemplo On ExemploTrigger For Insert, Update, Delete As Begin If Exists (Select Id From Deleted) Begin If Exists (Select Id From Inserted) Begin Print 'Foi feito um Update' End Else Begin Print 'Foi feito um Delete' End End Else Begin Print 'Foi feito um insert' End End

14 Gatilhos (Triggers) Create Table Estoque (Id Int, Produto Char(10), Qtd Int, QtdMinima Int) Create Table Compras (Id Int, Qtd Int) Create Table Vendas (Id Int, Qtd Int)

15 Gatilhos (Triggers) Quando um produto é comprado, acrescenta-se um item do produto no estoque (O estoque é atualizado automaticamente) Create Trigger TrCompras On Compras For Insert As Begin Update Estoque Set Estoque.Qtd = Estoque.Qtd + Inserted.Qtd From Estoque, Inserted Where Inserted.Id = Estoque.Id End

16 Gatilhos (Triggers) Ao vender um produto, a quantidade em estoque deve ser decrementada. E deve-se comparar com sua quantidade mínima em estoque. Create Trigger TrVendas On Vendas For Insert As Begin Update Estoque Set Estoque.Qtd = Estoque.Qtd - Inserted.Qtd From Estoque, Inserted Where Inserted.Id = Estoque.Id If Exists (Select Id From Estoque Where Qtd <= QtdMinima) PRINT 'Existem Produtos em Falta' End

17 Gatilhos (Triggers) Voltando ao nosso exemplo: – Ao invés de restringir contas com saldos negativos, podemos querer ativar uma ação que automaticamente inicia um empréstimo para aquela conta. Crie um Trigger ! conta (numero, titular, saldo) emprestimo (cod_emprestimo, numConta, valor)

18 Gatilhos (Triggers) create trigger EmprestimoAuto on Conta For Update as begin If exists (select numero from inserted where saldo <= 0) begin money = (select numero from inserted where saldo <= 0) = (select d.saldo + i.saldo from inserted i, deleted d) insert into emprestimo print 'Foi feito um emprestimo automático' end

19 Gatilhos (Triggers) Observações importantes – Triggers não podem ser criadas para Visões ou tabelas temporárias – Triggers não possuem parâmetros e não podem ser explicitamente invocados. São disparados quando os dados da tabela protegida são modificados – Triggers são considerados como parte de uma transação Se houver falha no seu funcionamento, os comandos serão revertidos (ROLLBACK)

20 Gatilhos no SQL Server Detalhe… – No SQL Server, os trigger são disparados após um INSERT, UPDATE ou DELETE – Conclusão: não existe o momento BEFORE nem AFTER


Carregar ppt "2008.2 Triggers Renata Viegas. 2008.2 Gatilhos (Triggers) Utilizados para implementar regras de negócio da aplicação Sua principal aplicação é a criação."

Apresentações semelhantes


Anúncios Google