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

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

Daniel Paulo dptsalvador@hotmail.com SQL Server 2014 Módulo II Daniel Paulo dptsalvador@hotmail.com.

Apresentações semelhantes


Apresentação em tema: "Daniel Paulo dptsalvador@hotmail.com SQL Server 2014 Módulo II Daniel Paulo dptsalvador@hotmail.com."— Transcrição da apresentação:

1 Daniel Paulo dptsalvador@hotmail.com
SQL Server Módulo II Daniel Paulo

2 Capítulo 10 – Triggers Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados: CONSTRAINTS e TRIGGERS. Um trigger, também chamado de gatilho, é um tipo especial de STORED PROCEDURE que automaticamente é disparado quando há um evento de linguagem.

3 Capítulo 10 – Triggers Tipos Trigger de DDL - Finalidade de disparar stored procedures para responder comandos DDL (ALTER, DROP e CREATE) Trigger de DML - Executa comando a partir dos eventos de INSERT, UPDATE ou DELETE Trigger de Logon - executado quando um usuário inicia uma sessão

4 Capítulo 10 – Triggers O acionamento do trigger ocorre de forma automática Não envia ou recebe parâmetros Podem gerar erros com o comando RAISERROR Tanto o Trigger como o comando que o acionou são tratados como sendo uma única transação Esta transação pode ser desfeita em qualquer lugar de dentro da trigger (ROLLBACK)

5 Capítulo 10 – Triggers Comandos que não podem ser executados por trigger: CREATE DROP DISK (TODOS) GRANT LOAD REVOKE ALTER TABLE ALTER DATABASE TRUNCATE TABLE UPDATE STATISTICS RECONFIGURE RESTORE DATABASE RESTORE LOG SELECT INTO

6 Capítulo 10 – Triggers Diferenças entre triggers e constraints
CONSTRAINT - São proativas, o SQL Server verifica as regras antes da inserção / alteração dos dados TRIGGER - São reativas, o SQL executa o comando e depois verifica se existiu algum erro (caso ocorra realiza um ROLLBACK)

7 Capítulo 10 – Triggers TRIGGER DML
Um trigger DML é uma ação programada para executar quando um evento DML ocorre em um servidor de banco de dados. Podem afetar outras tabelas e pode incluir instruções TSQL complexas Podem prevenir operações incorretas ou mal intencionadas de INSERT, UPDATE ou DELETE e fazer restrições mais complexas do que as definidas na CONSTRAINT CHECK

8 Capítulo 10 – Triggers Podem referenciar outras colunas, ao contrário da constraint CHECK Podem avaliar o estado de uma tabela antes e depois de uma modificação dos dados e realizar ações com base nas diferenças entre o estado anterior e posterior à modificação dos dados Com resposta à uma instrução de modificação de dados, os trigger localizadas em uma mesma tabela permitem que diferentes ações sejam realizadas

9 Capítulo 10 – Triggers Categorias da trigger DML
TRIGGER AFTER - Especificados somente em tabelas, as trigger AFTER são executadas após a conclusão das ações de INSERT, UPDATE ou DELETE Trigger INSTEAD OF - Também conhecidas como BEFORE, são executadas independentemente da transação. São aplicadas também as VIEWS TRIGGER CLR – Triggers que são construídas com métodos escritos na plataforma .NET

10 Capítulo 10 – Triggers Observações Um trigger normal na verdade é um trigger AFTER. Este tipo de trigger acontece junto com a transação que disparou o trigger seja ela um INSERT, UPDATE ou um DELETE. Dentro de um trigger AFTER você pode cancelar a ação utilizando um ROLLBACK. Você somente consegue criar triggers AFTER em tabelas.

11 Capítulo 10 – Triggers Tabelas INSERTED e DELETED O SQL cria em memória uma ou duas tabela para armazenamento dos dados com os quais a trigger vai trabalhar. Instrução INSERTED DELETED INSERT X DELETE UPDATE Novo Antigo

12 Capítulo 10 – Triggers TRIGGER INSTEAD OF
Este trigger é responsável por determinar que o trigger DML seja executado ao invés do comando SQL ser disparado. Com isso, as ações realizadas por comandos disparados são sobrescritos. Apenas 1 trigger por tabela ou view Não pode ser utilizada com comandos DELETE e UPDATE em tabelas que possuem relacionamento referencial que determina ações em cascata ON DELETE e ON UPDATE.

13 Capítulo 10 – Triggers TRIGGER DDL
Executam Stored Procedures em resposta a um evento DDL Prevenir certas alterações no esquema do banco de dados, ou determinar que algo ocorra no banco de dados conforme a alteração sofrida por este esquema Registrar alterações ou eventos realizados no esquema do banco de dados Iniciar, parar, pausar, modificar e repetir os resultados de trace

14 Capítulo 10 – Triggers Regular operações de banco de dados
Operam nas instruções CREATE, ALTER e DROP Os trigger DDL são disparados somente após uma instrução TSQL ter sido executada São ferramentas importantes para registrar as ações administrativas do sistema Não existe equivalência entre as operações dos Trigger DDL e dos Trigger INSTEAD OF Podemos utilizar a instrução ROLLBACK para interromper as transação atual Uma única operação DDL pode executar  múltiplos trigger DDL

15 Capítulo 10 – Triggers Visualizando trigger Select name from sys.triggers Object explorer no SSMS Definição da trigger sys.sql_modules

16 Capítulo 10 – Triggers Trigger aninhadas
Qualquer trigger pode conter uma instrução UPDATE, INSERT  ou DELETE que afete uma tabela. Os trigger são aninhados quando um trigger executa uma ação que inicia outra trigger. Por padrão, a opção de configuração de um trigger aninhado é ON no nível do servidor Aninhamento de até 32 triggers

17 Capítulo 10 – Triggers Habilitando e desabilitando trigger aninhados - Ajustar o aninhamento de triggers para a opção nested triggers da stored procedure sp_configure para 0 EXEC sp_configure 'Nested Triggers' , 0 - desabilita EXEC sp_configure 'Nested Triggers' , 1 - Habilita ou Object Explorer pág 357

18 Capítulo 10 – Triggers Triggers recursivas: é um trigger que executa uma ação que faz com que o mesmo trigger seja disparado novamente, direta ou indiretamente. Recursão direta: Ocorre quando um trigger é disparado e executa uma ação na mesma tabela que ela seja disparado novamente Recursão indireta: Quando um trigger é disparado e executada uma ação que faz com que outro trigger seja disparado na mesma tabela ou em outra e, consequentemente, este trigger causa alteração na tabela original. Essa ação acaba disparando novamente o trigger original.

19 Capítulo 10 – Triggers Alterando TRIGGER - ALTER TRIGGER Desabilitar um TRIGGER - DISABLE TRIGGER Habilitar um TRIGGER - ENABLE TRIGGER Apagar um TRIGGER - DROP TRIGGER

20 Capítulo 10 – Triggers Considerações
O SQL verifica primeiramente as Constraints e depois as TRIGGERS Tabelas temporárias ou VIEWS não podem possuir TRIGGERS Quando trabalhamos com tabelas que possuem chaves estrangeiras com uma ação DELETE/UPDATE em cascata, os TRIGGERS dos comandos INSTEAD OF DELETE/UPDATE não podem ser definidos

21 Capítulo 10 – Triggers Os resultados obtidos após o TRIGGER ter sido disparado são retornados à aplicação que o chamou Para não retornar dados utilizar o comando SET NOCOUNT O recurso de retornar dados a partir de TRIGGERS será excluído em uma versão futura O comando TRUNCATE TABLE não ativa TRIGGERS

22 Capítulo 10 – Triggers Exemplo

23 Capítulo 10 – Triggers Laboratório página 374 à 379


Carregar ppt "Daniel Paulo dptsalvador@hotmail.com SQL Server 2014 Módulo II Daniel Paulo dptsalvador@hotmail.com."

Apresentações semelhantes


Anúncios Google