Professional Documents
Culture Documents
Triggers
Renata Viegas
2008.2
Gatilhos (Triggers)
2008.2
Gatilhos (Triggers)
2008.2
Gatilhos (Triggers)
Um trigger um conjunto de
comandos
SQL
que
automaticamente
disparado
quando um comando INSERT,
UPDATE ou DELETE executado em
uma tabela.
2008.2
Gatilhos (Triggers)
na
a
2008.2
Gatilhos (Triggers)
2008.2
Gatilhos (Triggers)
Composio de um trigger
Um nome: nico para cada banco de dados
A maneira: um comando INSERT, UPDATE ou
DELETE
As instrues: Um bloco de comandos SQL
Vnculo de um trigger
Os gatilhos (triggers) so sempre vinculados a
uma determinada tabela
Quando uma tabela removida, todos os gatilhos
relacionados sero excludos automaticamente.
2008.2
2008.2
2008.2
2008.2
Gatilhos (Triggers)
Sintaxe :
CREATE
TRIGGER
<nome>
ON
<tabela>
FOR [INSERT][,][UPDATE][,][DELETE]
AS <comandos SQL>
2008.2
Gatilhos (Triggers)
2008.2
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
2008.2
Gatilhos (Triggers)
2008.2
Gatilhos (Triggers)
Quando um produto comprado, acrescenta-se um
item do produto no estoque (O estoque atualizado
automaticamente)
2008.2
Gatilhos (Triggers)
Ao vender um produto, a quantidade em estoque
deve ser decrementada. E deve-se comparar com
sua quantidade mnima em estoque.
2008.2
Gatilhos (Triggers)
Crie um Trigger !
conta (numero, titular, saldo)
emprestimo
(cod_emprestimo,
valor)
numConta,
2008.2
Gatilhos (Triggers)
create trigger EmprestimoAuto on Conta
For Update
as
begin
If exists (select numero from inserted where saldo <= 0)
begin
declare @numC int, @valor money
Set @numC = (select numero from inserted
where saldo <= 0)
Set @valor = (select d.saldo + i.saldo from inserted i,
deleted d)
insert into emprestimo values (1, @numC, @valor)
print 'Foi feito um emprestimo automtico'
end
end
2008.2
Gatilhos (Triggers)
Observaes importantes
Triggers no podem ser criadas para Vises ou
tabelas temporrias
Triggers no possuem parmetros e no podem
ser explicitamente invocados.
So disparados quando os dados da tabela protegida
so modificados
2008.2
Detalhe
No SQL Server, os trigger so disparados
aps um INSERT, UPDATE ou DELETE
Concluso: no existe o momento
BEFORE nem AFTER