Neste artigo vou mostrar os triggers instead of do SQL Server 2000. Os instead of triggers funcionam de uma maneira diferente dos triggers normais, os triggers normais são executados após a execução de algum comando já os instead of triggers são executados antes do comando. Outra propriedade interessante dos instead of triggers é que eles ignoram incondicionalmente o comando executado. Veja abaixo (Figura 1) um exemplo de um instead of trigger.

Criação de instead of trigger
Figura 1. Criação de instead of trigger

Vamos agora inserir um registro para verificar o que acontece. Como você pode ver na figura 2 nenhum registro foi inserido na tabela (isto se deve ao fato de que os triggers instead of ignoram incondicionalmente o comando executado). Você deve estar se perguntando para que serve este recurso se ele ignora as alterações no banco de dados, vou demonstrar agora como tirar proveito dos instead of triggers. Você pode criar uma view para inclusão dos dados para verificar se as regras de negócios foram violadas e só então depois gravar os dados na tabela. É por isso que costumam dizer que instead of triggers são para views.

Testando o instead of trigger
Figura 2. Testando o instead of trigger

Veja abaixo na figura 3 um exemplo de uma view com instead of trigger, antes de criar este trigger devemos excluir o trigger criado na tabela cliente. Você pode perceber no exemplo abaixo que o trigger checa se os dados inseridos não violam a chave primaria e só então os dados são inseridos na tabela.

Criando um instead of trigger para a view
Figura 3. Criando um instead of trigger para a view
Testando o instead of trigger da view
Figura 4. Testando o instead of trigger da view

Como você pode ver na figura 4, a mensagem reportada pelo SQL Server é a nossa mensagem e não a mensagem de violação de chave primaria do SQL Server, isto nos leva a confirmar que o nosso trigger foi executado antes do comando para inserir os dados.

  • Conclusão: Como podemos perceber os instead of triggers nos permitem checar as regras de negócios antes da conclusão do comando, trata-se de um recurso extremamente útil do SQL Server. Espero que possa ser útil a todos. Um grande abraço e até a próxima.