Você está na página 1de 12

Base de Dados

z
Procedimentos,
Funções e Triggers
Introdução
z

Os Procedimentos e trigger armazenados são considerados como uma parte vital


do banco de dados SQL. O Procedimento Armazenado é usado para executar
uma tarefa específica dentro de um aplicativo de banco de dados. Um
procedimento armazenado pode ser usado em qualquer lugar de acordo com a
conveniência e economiza esforço de codificação e o tempo geral de
programação.

Um trigger é um tipo especial de procedimento armazenado- um que não pode


ser executado explicitamente, em vez de anexado a um evento. Sempre que o
evento acontece, o gatilho dispara e o código do gatilho é executado. O objetivo
deste blog é discutir procedimentos armazenados e gatilhos no SQL Server.
Conceito
z

O termo trigger (gatilho em inglês) define uma estrutura do banco de dados que funciona, como o nome sugere,
como uma função que é disparada mediante alguma ação. Geralmente essas ações que disparam os triggers são
alterações nas tabelas por meio de operações de inserção, exclusão e atualização de dados (insert, delete e
update).

Um trigger está intimamente relacionado a uma tabela, sempre que uma dessas ações é efetuada sobre essa
tabela, é possível dispará-lo para executar alguma tarefa.

Neste artigo veremos como trabalhar com triggers no SQL Server, através de um exemplo que simula uma
situação real, para facilitar o entendimento.

Um Trigger é um procedimento armazenado no banco de dados que é chamado automaticamente sempre que
ocorre um evento especial no banco de dados. Por exemplo, um acionador pode ser chamado quando uma linha
é inserida em uma tabela especificada ou quando determinadas colunas da tabela estão sendo atualizadas.

Geralmente essas ações que acionam os triggers são alterações nas tabelas por meio de operações de inserção,
exclusão e atualização de dados (insert, delete e update).
z
Existem duas classes de Triggers no SQL

Triggers DDL (Data Definition Language): Essa classe de Triggers é acionada em


eventos que alteram a estrutura (como criar, modificar ou soltar uma tabela) ou em
determinados eventos relacionados ao servidor, como alterações de segurança ou
atualização de eventos estatísticos.

Triggers DML (Data Modification Language): Esta é a classe de Triggers mais usada.
Nesse caso, o evento de disparo é uma declaração de modificação de dados; poderia
ser uma instrução de inserção, atualização ou exclusão em uma tabela ou em uma
exibição.
z
Os Triggers DML têm tipos diferentes

FOR ou AFTER [INSERT, UPDATE, DELETE]: Esses tipos de Triggers são


executados após o término da instrução de disparo (inserção, atualização ou
exclusão).

INSTEAD OF [INSERT, UPDATE, DELETE]: Ao contrário do tipo FOR (AFTER),


os Triggers INSTEAD OF são executados em vez da instrução de disparo. Em outras
palavras, esse tipo de trigger substitui a instrução de disparo. Isso é muito útil nos
casos em que você precisa ter integridade referencial entre bancos de dados.
Vantagens do Trigger
z

Gerar alguns valores de coluna derivados automaticamente;


Aplicar a integridade referencial;
Registro de eventos e armazenamento de informações no acesso à tabela;
Auditoria;
Replicação síncrona de tabelas;
Imposição de autorizações de segurança;
Impedir transações inválidas.
Garantia de segurança e integridade dos dados;
Processos de auditoria;
Automatização de processos e tarefas;
Armazenamento das operações realizadas (logs).
Ou seja, além de proporcionar a você a automatização de tarefas, também proporciona a segurança e
integridade dos dados para processos de auditoria.
Quando
z usar Triggers

A utilização de triggers dependerá muito de como você está desenvolvendo sua


aplicação. O momento ideal para usar triggers seria quando você deseja tirar algumas
funções de sua aplicação e colocá-las no banco de dados. Um exemplo seria o
armazenamento de acessos à sua aplicação, visto que o trigger vai disparar uma função
que vai pegar os dados do visitante (IP, data de acesso, etc) e criará um log de usuário.
Como usar Trigger em SQL

A instrução CREATE TRIGGER permite criar um novo trigger que é acionado


automaticamente sempre que um evento
como INSERT, DELETE ou UPDATE ocorre em uma tabela.

A sintaxe da instrução CREATE TRIGGER:

Utilize o comando CREATE TRIGGER na primeira linha acompanhado do nome do trigger — que pode ser qualquer
um;

Na segunda linha, adicione a cláusula ON acompanhada do nome da tabela do banco de dados da sua aplicação;
• Na terceira linha, devem estar os comandos AFTER/BEFORE (DEPOIS/ANTES),
acompanhados da operação desejada (inserção, atualização ou remoção). Ou seja, você vai
definir se uma operação de inserção vai ocorrer antes ou depois de determinada ação, por
exemplo;
• Na quarta e quinta linha, são os comandos do banco de dados que você irá executar
para complementar o trigger.
Os parâmetros
z são:

• Nome do trigger: nome que identificará o gatilho como objeto do banco de dados. Deve seguir as
regras básicas de nomenclatura de objetos.

• Nome da tabela: tabela à qual o gatilho estará ligado, para ser disparado mediante ações de insert,
update ou delete.

 For/after/instead of: uma dessas opções deve ser escolhida para definir o momento em que o
trigger será disparado. FOR é o valor padrão e faz com o que o gatilho seja disparado junto da
ação. AFTER faz com que o disparo se dê somente após a ação que o gerou ser concluída.
INSTEAD OF faz com que o trigger seja executado no lugar da ação que o gerou.

 Insert/update/delete: uma ou várias dessas opções (separadas por vírgula) devem ser indicadas para
informar ao banco qual é a ação que disparará o gatilho. Por exemplo, se o trigger deve ser
disparado após toda inserção, deve-se utilizar AFTER INSERT.
Funções
z Especiais para trigger

As funções são feitas para facilitar a codificação. O SQL Server inclui um conjunto de funções especiais
que só podem ser usadas dentro dos gatilhos. Essas funções nos permitem obter informações que, caso
contrário, não seríamos capazes de obter facilmente.

2.9. Comandos comuns


• Para remover um Trigger podemos utilizar o comando: DROP TRIGGER nome_Trigger;
• Para visualizar todos os Triggers podemos utilizar o comando: SHOW TRIGGERS;
z
Conclusão

Vimos que os Triggers no SQL são bem úteis quando precisamos disparar
eventos de forma automática quando acontecer algum evento que seja
importante para nós, como um INSERT em uma tabela de juros, assim os valores
de outras tabelas deveriam ser alterados, e podemos fazer isso automaticamente
com os Triggers.

Você também pode gostar