15/08/2022 09:46 SQL - Triggers
SQL
- Apresentando Triggers
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 :
1. Um comando
SQL que vai disparar o Trigger ( INSERT , DELETE ,
UPDATE)
2. A ação
que o Trigger vai executar ( Geralmente um bloco de
códigos SQL )
Como não poderia
deixar de ser , existem certas limitações na utilização de um
Trigger :
Não é possível 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
https://www.macoratti.net/sql_trig.htm#:~:text=Um Trigger é bloco de,tabela do banco de dados. 1/6
15/08/2022 09:46 SQL - Triggers
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 ]
}
a. ON Table - a tabela para o
qual o trigger esta sendo criado
b. FOR - deve ser seguido do
tipo de comando que acionam o trigger
c. AFTER - determina que o
trigger somente sera disparado quando todas as rotinas
especificadas no comando de disparo forem executadas com
sucesso
d. INSTEAD OF - Determina que
o trigger será executado ao invés do comando de disparo
do mesmo.
e. [ DELETE ] [INSERT]
[UPDATE] - indicam o tipo de ação que deve disparar o
trigger.
Quando você for
criar um Trigger deverá definir :
1. O nome
2. A Tabela
para o qual o Trigger irá ser criado
3. Quando o
Trigger deverá ser disparado
4. 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.)
USE pubs
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'reminder' AND type = 'TR')
DROP TRIGGER reminder
GO
CREATE TRIGGER reminder
https://www.macoratti.net/sql_trig.htm#:~:text=Um Trigger é bloco de,tabela do banco de dados. 2/6
15/08/2022 09:46 SQL - Triggers
ON titles
FOR INSERT, UPDATE
AS RAISERROR (50009, 16, 10)
GO
Criando
um Trigger com o Enterprise Manager
Vamos ver agora
como criar um trigger usando o Enterprise Manager
:
Abra o Enterprise
Manager e expanda o item banco de dados e a
pasta onde esta a
tabela que será aberta.
Clique com o botão direito
do mouse no nome da tabela onde deseja criar o trigger e
selecione no menu pop up a opção New Table
Vamos criar a tabela tabela1
conforme a estrutura da figura 1. Na figura 2 temos
a tabela
já criada.
figura 1 figura 2
- Agora clique
com o botão direito do mouse sobre a tabela para a qual deseja
criar o trigger
e no menu selecione : All Tasks e
a seguir Manage Triggers, conforme abaixo
- A janela Triggers
Properties será exibida com a estrutura padrão de um
trigger.Agora faça o
seguinte :
https://www.macoratti.net/sql_trig.htm#:~:text=Um Trigger é bloco de,tabela do banco de dados. 3/6
15/08/2022 09:46 SQL - Triggers
Altere o conteúdo do
colchete substituindo TRIGGER NAME pelo
nome do trigger que
esta criando
Na linha seguinte escolha o
tipo de ação que irá disparar o trigger (INSERT,
UPDATE,
DELETE )
Abaixo da palavra AS
informe a ação que o trigger irá realizar.
- Vamos criar o
trigger chamado teste que emitirá um aviso toda
vez que um registro for
incluído na tabela Tabela1. O
desenho do nosso trigger deverá ficar assim:
- Verifique a
sintaxe clicando em - Check Syntax e a seguir
salve o trigger clicando no botão
OK.
Vamos agora
testar se o trigger esta funcionando. Abra o Query
Analyzer e selecione o banco
de dados para o qual criou
o trigger e digite na janela a instrução SQL para incluir um
registro
. Veja que assim que o registro é incluído a mensagem -
"Um registro foi incluído na tabela
Tabela1"
é exibido indicando que o nosso trigger esta funcionando.
https://www.macoratti.net/sql_trig.htm#:~:text=Um Trigger é bloco de,tabela do banco de dados. 4/6
15/08/2022 09:46 SQL - Triggers
Para alterar um
trigger usamos o comando ALTER TRIGGER : ALTER TRIGGER
nome_trigger
Para excluir um
trigger usamos o comando DROP TRIGGER : DROP TRIGGER
nome_trigger
Por enquanto é
só isto.. Até a próxima...
Veja os Destaques e novidades do SUPER DVD
Visual Basic (sempre atualizado) : clique e
confira !
Quer migrar para o VB .NET ?
Veja mais sistemas completos para a
plataforma .NET no Super DVD .NET ,
confira...
Curso Básico VB .NET - Vídeo Aulas
Quer aprender C# ??
Chegou o Super DVD C# com exclusivo
material de suporte e vídeo aulas com
curso básico sobre C#.
Curso C# Basico - Video Aulas
Quer aprender os conceitos da
Programação Orientada a objetos ?
Curso Fundamentos da Programação
Orientada a Objetos com VB .NET
Quer aprender o gerar relatórios com o
ReportViewer no VS 2013 ?
Curso - Gerando Relatórios com o
ReportViewer no VS 2013 - Vídeo
https://www.macoratti.net/sql_trig.htm#:~:text=Um Trigger é bloco de,tabela do banco de dados. 5/6
15/08/2022 09:46 SQL - Triggers
Aulas
Referências:
Seção VB .NET do Site Macoratti.net
Super DVD .NET - A sua
porta de entrada na plataforma .NET
Super DVD Vídeo Aulas - Vídeo
Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Seção C# do site Macoratti.net
Seção ASP .NET do site Macoratti .net
Curso Básico VB .NET - Vídeo Aulas
Curso C# Básico - Vídeo Aulas
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
Macoratti .net | Facebook
macoratti - YouTube
Jose C Macoratti (@macorati) | Twitter
José Carlos Macoratti
https://www.macoratti.net/sql_trig.htm#:~:text=Um Trigger é bloco de,tabela do banco de dados. 6/6