Se até agora você esta acostumado a trabalhar com banco de dados do tipo ISAM ( Dbase , FoxPro, Access , Paradox...); desenvolver uma aplicação para gerenciar os dados neste caso significa criar uma aplicação que faça o controle sobre todo ambiente desde a interface , passando pela manutenção dos dados e as regras de negócios do sistema.
É o sistema que deve controlar e tomar as decisões sobre o que fazer em determinadas situações. Assim em um programa para controlar os produtos de uma empresa quando a quantidade de um produto atingir uma certa quantidade o sistema deverá avisar o operador/usuário para providenciar a reposição do mesmo.
Ao trabalhar com base de dados Cliente/Servidor como SQL Server , Oracle , Informix , dentre outras, podemos usar um recurso muito poderoso chamado Trigger.
Um Trigger é bloco de comandos Transact-SQL que é automaticamente executado quando um comando INSERT , DELETE ou UPDATE for executado em uma tabela do banco de dados.
Os Triggers são usados para realizar tarefas relacionadas com validações , restrições de acesso , rotinas de segurança e consistência de dados ; desta forma estes controles deixam de ser executados pela aplicação e passam a ser executados pelos Triggers em determinadas situações
- Mecanismos de validação envolvendo múltiplas tabelas
- Criação de contéudo de uma coluna derivada de outras colunas da tabela
- Realizar análise e e atualizações em outras tabelas com base em alterações e/ou incluções da tabela atual
A criação de um Trigger envolve duas etapas :
- Um comando SQL que vai disparar o Trigger ( INSERT , DELETE , UPDATE)
- A ação que o Trigger vai executar ( Geralmente um bloco de códigos SQL )
Como não poderia deixar de ser , existem certas limatações na utilização de um Trigger :
- Não é possivel criar um Trigger para uma visão
- O resultado da execução de um Trigger é retornado para a aplicação que o chamou.
- O comando WRITETEXT não ativa um Trigger
- O comando TRUNCATE TABLE não pode ser reconhecido por um Trigger
- Não podemos usar em um Trigger os seguintes comandos SQL :
- ALTER DATABASE , ALTER TRIGGER , ALTER PROCEDURE , ALTER TABLE , ALTER VIEW . CREATE DATABASE , CREATE INDEX , CREATE PROCEDURE, CREATE SCHEMA, CREATE TABLE , DROP DATABASE, DROP TABLE , DROP PROCEDURE, DROP TRIGGER, DROP INDEX, GRANT , LOAD DATABASE, REVOKE, RESTORE DATABASE, TRUNCATE TABLE.
Como criar um Trigger
Podemos criar um Trigger usando o comando Create Trigger do SQL Server ou através do Enterprise Manager. A Sintaxe de um Trigger é a seguinte:
CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
[ { IF UPDATE ( column )
[ { AND | OR } UPDATE ( column ) ]
[ ...n ]
| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
{ comparison_operator } column_bitmask [ ...n ]
} ]
sql_statement [ ...n ]
}
}
|
- ON Table - a tabela para o qual o trigger esta sendo criado
- FOR - deve ser seguido do tipo de comando que acionam o trigger
- AFTER - determina que o trigger somente sera disparado quando todas as rotinas especificadas no comando de disparo forem executadas com sucesso
- INSTEAD OF - Determina que o trigger será executado ao invés do comando de disparo do mesmo.
- [ DELETE ] [INSERT] [UPDATE] - indicam o tipo de ação que deve disparar o trigger.
Quando você for criar um Trigger deverá definir :
- O nome
- A Tabela para o qual o Trigger irá ser criado
- Quando o Trigger deverá ser disparado
- Os comandos que determinam qual ação o Trigger deverá executar
Exemplo de Triggers:
1- O trigger abaixo será disparado quando alguém tentar incluir ou alterar dados na tabela Titles. Ele emite uma mensagem ao usuário. ( 50009 é uma mensagem definida para o usuário em sysmessages.)
Fonte(macoratti) |