Sei sulla pagina 1di 12

As Triggers tambm conhecidas como gatilhos ou

disparadores. So cdigos de SQL armazenados dentro do


banco de dados, onde podemos definir um "bloco" SQL para
que seja executado automaticamente pelo banco.
Ao contrrio dos procedimentos armazenados do sistema, os
disparadores no podem ser chamados diretamente e no
passam nem aceitam parmetros.

Fornece uma forma alternativa para verificar a integridade


da sua base de dados.

O trigger pode pegar os erros de lgica de negcio no nvel


de banco de dados.

Fornece uma forma alternativa de executar tarefas


agendadas. Com trigger, voc no tem que esperar para
executar as tarefas agendadas. Voc pode lidar com as
tarefas antes ou aps as alteraes feitas para tabelas de
banco de dados.

O trigger muito til quando voc us-lo para auditar as


alteraes de dados em uma tabela do banco de dados.

O trigger pode apenas fornecer validao estendida e no


pode substituir todas as validaes. Algumas validaes
simples pode ser feito em nvel de aplicativo.

Triggers SQL executa invisvel da aplicao cliente que se


conecta ao servidor de banco de dados.

O trigger executa todas as atualizaes feitas na tabela,


portanto, ele adiciona a carga de trabalho para o banco de
dados e sistema de causa corre mais devagar.

No se pode chamar diretamente uma Trigger com CALL,


como se faz com um Stored e Procedures.

No permitido iniciar ou finalizar transaes em meio


Trigger.

No se pode criar um Trigger para uma tabela temporria


TEMPORARY TABLE.

Uma Trigger ainda no pode ser implementada com a


inteno de devolver para o usurio mensagens de erros.

CREATE TRIGGER [nome do trigger]


ON [nome da tabela]
[FOR / AFTER / ] [INSERT/ UPDATE/
DELETE]
AS
Cdigo (Declarao)

Nome Nome atribudo ao trigger.

ON Define para qual tabela o trigger esta sendo criado.

FOR o valor padro e faz com o que o gatilho seja


disparado junto da ao.

AFTER Faz com que o gatilho seja disparado aps a ao


gerada com sucesso.

INSERT/UPDATE/DELETE: uma ou vrias dessas opes


(separadas por vrgula) devem ser indicadas para informar
ao banco qual a ao que disparar o gatilho.

Cdigo Ser declarado a tarefa que trigger ir executar.

CREATE TABLE CAIXA


(

GO

DATADATETIME,
SALDO_INICIALDECIMAL(10,2),
SALDO_FINALDECIMAL(10,2)

INSERT INTO CAIXA


VALUES (CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE(), 103)), 100, 100)
GO
SELECT * FROM CAIXA
CREATE TABLE VENDAS
(
DATADATETIME,
CODIGOINT,
VALORDECIMAL(10,2)
)
GO

CREATE TRIGGER TGR_VENDAS_AI


ON VENDAS
FOR INSERT
AS
BEGIN
DECLARE
@VALORDECIMAL(10,2),
@DATADATETIME

SELECT @DATA = DATA, @VALOR = VALOR FROM INSERTED


UPDATE CAIXA SET SALDO_FINAL = SALDO_FINAL + @VALOR
WHERE DATA = @DATA
END
GO

INSERT INTO VENDAS


VALUES (CONVERT(DATETIME, CONVERT(VARCHAR, GETDATE(), 103)), 1, 10)

SELECT * FROM VENDAS


SELECT * FROM CAIXA
CREATE TRIGGER TGR_VENDAS_AD
ON VENDAS
FOR DELETE
AS
BEGIN
DECLARE
@VALORDECIMAL(10,2),
@DATADATETIME
SELECT @DATA = DATA, @VALOR = VALOR FROM DELETED
UPDATE CAIXA SET SALDO_FINAL = SALDO_FINAL - @VALOR
WHERE DATA = @DATA
END
GO

DELETE FROM VENDAS WHERE CODIGO = 1


GO
SELECT * FROM VENDAS
SELECT * FROM CAIXA
TRUNCATE TABLE VENDAS
SELECT * FROM CAIXA;
SELECT * FROM VENDAS

Potrebbero piacerti anche