Baixe o app para aproveitar ainda mais
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
Compartilhar