Buscar

TRIGGERS

Prévia do material em texto

TRIGGER (gatilho) 
É uma rotina de programação que é disparada automaticamente, diante das seguintes 
operações realizadas com tabelas: Inclusão de registro (INSERT), Alteração de registro 
(UPDATE) ou Remoção de registro (DELETE) – comandos DML. 
CREATE TRIGGER Nome da trigger ON Nome da tabela 
FOR insert e/ou update e/ou delete AS 
BEGIN 
Comandos SQL 
END 
OBS 1: Para alterar uma TRIGGER já existente, basta usar o ALTER TRIGGER (com a sintaxe 
idêntica ao CREATE TRIGGER), que a sobrescreve. 
OBS 2: Para apagar uma TRIGGER já existente, basta usar o comando: 
DROP TRIGGER Nome da trigger 
OBS 3: Para visualizar uma trigger criada no SQL SERVER, basta abrir a pasta Tabelas, clicar 2x 
na tabela em questão, e em seguida na pasta Triggers. 
 
EXEMPLO 1: 
CREATE TRIGGER exemplo1 ON departamentos 
FOR INSERT AS 
BEGIN 
SELECT * FROM DEPARTAMENTOS 
END 
Tabelas Temporárias (INSERTED e DELETED) 
São tabelas criadas automaticamente em memória (com a mesma estrutura da tabela base da 
trigger), no momento da execução de uma trigger. 
INSERTED: contém os registros que foram inseridos (INSERT) e os registros com os novos 
valores (UPDATE) . 
DELETED: contém os registros que foram removidos (DELETE) e os registros com os valores 
antigos (UPDATE). 
EXEMPLO 2: 
CREATE TRIGGER inclui ON DEPARTAMENTOS 
FOR INSERT AS 
BEGIN 
SELECT 'Dados a serem inseridos:' 
SELECT * FROM INSERTED 
END 
TESTE DO TRIGGER 
INSERT INTO DEPARTAMENTOS VALUES (360,'Compras',60,3) 
 
EXEMPLO 3: 
CREATE TRIGGER exclui ON DEPARTAMENTOS 
FOR DELETE AS 
BEGIN 
SELECT 'Dados a serem deletados:' 
SELECT * FROM DELETED 
END 
TESTE DO TRIGGER 
DELETE FROM DEPARTAMENTOS WHERE departamento_id = 20 
 
 
 
EXEMPLO 4: 
CREATE TRIGGER altera ON DEPARTAMENTOS 
FOR UPDATE AS 
BEGIN 
SELECT 'Dados antigos:' 
SELECT * FROM DELETED 
SELECT 'Dados alterados:' 
SELECT * FROM INSERTED 
END 
 
TESTE DO TRIGGER 
UPDATE DEPARTAMENTOS 
SET Departamento_nome = 'Suprimentos' 
WHERE Departamento_nome = 'Compras' 
 
 
 
 
EXEMPLO 5: 
CREATE TRIGGER cancela ON PAISES 
FOR INSERT, UPDATE, DELETE 
AS 
BEGIN 
SELECT 'CANCELANDO A AÇÃO DML:' 
ROLLBACK 
END 
TESTE DO TRIGGER 
insert into paises values ('SA','Africa do Sul',4) 
SELECT * FROM PAISES where pais_id = 'SA' 
 
update paises set pais_id = 'EU' 
where pais_id = 'US' 
SELECT * FROM PAISES where pais_id = 'US' 
 
delete from paises 
SELECT * FROM PAISES

Continue navegando