daniel paulo [email protected]. triggers o sql server oferece dois mecanismos primários para...

23
Daniel Paulo [email protected]

Upload: adriana-olivares-rocha

Post on 07-Apr-2016

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

Daniel [email protected]

Page 2: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

TriggersO 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.

Page 3: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

TiposTrigger 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

Page 4: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

- 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)

Page 5: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

Comandos que não podem ser executados por trigger:CREATE DROPDISK (TODOS) GRANTLOAD REVOKEALTER TABLE ALTER DATABASETRUNCATE TABLE UPDATE STATISTICSRECONFIGURE RESTORE DATABASERESTORE LOG SELECT INTO

Page 6: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

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)

Page 7: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

TRIGGER DMLUm 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

Page 8: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

- 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

Page 9: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

Categorias da trigger DMLTRIGGER 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

Page 10: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

ObservaçõesUm 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.

 

Page 11: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

Tabelas INSERTED e DELETEDO SQL cria em memória uma ou duas tabela

para armazenamento dos dados com os quais a trigger vai trabalhar.

Instrução INSERTED DELETEDINSERT XDELETE XUPDATE Novo Antigo

Page 12: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

TRIGGER INSTEAD OFEste 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.

 

Page 13: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

TRIGGER DDLExecutam 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

Page 14: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

- 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

Page 15: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

Visualizando trigger Select name from sys.triggers Object explorer no SSMS Definição da trigger sys.sql_modules 

Page 16: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

Trigger aninhadasQualquer 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

 

Page 17: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

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 - desabilitaEXEC sp_configure 'Nested Triggers' ,  1 - Habilita ouObject Explorerpág 357 

Page 18: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

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.

Page 19: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

Alterando TRIGGER- ALTER TRIGGER

Desabilitar um TRIGGER- DISABLE TRIGGER

Habilitar um TRIGGER- ENABLE TRIGGER

Apagar um TRIGGER- DROP TRIGGER

Page 20: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

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

Page 21: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

- 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

Page 22: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

Exemplo

Page 23: Daniel Paulo dptsalvador@hotmail.com. Triggers O SQL Server oferece dois mecanismos primários para reforçar as regras de negócio e a integridade dos dados:

Laboratório página 374 à 379