AULA TRIGGERS BANCO DE DADOS
Por: adriel_flavia • 27/3/2016 • Trabalho acadêmico • 843 Palavras (4 Páginas) • 367 Visualizações
TRIGGERS:
O que é uma Trigger? Também definida como gatilho, é um objeto armazenado no banco de dados que pode ser utilizado para disparar um alerta definido pelo usuário quando alguma regra dentro do banco de dados for inserida, atualizada ou deletada (INSERT,UPDATE,DELETE) , ou quando há necessidade de modificação em objetos do banco de dados (CREATE, ALTER, DROP, GRANT, REVOKE,etc).
Em quais situações poderíamos utilizar Triggers? Vejamos alguns exemplos:
Quando um determinado dado precisa ser atualizado em função da alteração de outro dado que faz relação a este, pode-se utilizer uma trigger que atualiza automaticamente o dado que depende de outro dado. Ex: O saldo de uma peça no estoque pode ser atualizado quando a mesma for utilizada para determinado finalidade.
Quando há necessidade de de se rastrear todas as modificações feitas num determinado conteúdo importante de uma tabela, então se faz necessário criar um log de todas as manutenções realizadas neste conteúdo. Ex.: Atualização de banco/agencia/conta de um fornecedor; atualização de data de vencimento de uma fatura; trocar preço de um determinado produto, etc. Neste log deve conter pelo menos a chave da linha alterada,
o conteúdo alterado, quem alterou, quando alterou.
Trabalhando com Triggers:
create table cad_cliente
(cod_cli int not null,
nome_cli char(30) not null,
bco_cli int not null,
age_cli int not null,
conta_cli int not null
primary key (cod_cli)
);
create table LogCliente
(protocolo int IDENTITY,
cod_cli_log int not null,
bco_cli_log int not null,
age_cli_log int not null,
conta_cli_log int not null,
data_log datetime,
usuario varchar(30),
comando char(7),
primary key (protocolo)
);
TRIGGER PARA INSERT:
create trigger Trig_LogCliente_INS
on cad_cliente
for insert
as
declare @codigo int
declare @banco int
declare @agencia int
declare @conta int
declare @data datetime
declare @usuario varchar(30)
declare @comando char(7)='INSERT'
set @codigo =(select cod_cli from inserted)-- codigo do cliente
set @banco =(select bco_cli from inserted)-- banco do cliente
set @agencia=(select age_cli from inserted)-- agencia do cliente
set @conta =(select conta_cli from inserted)-- conta do cliente
set @data =GETDATE() -- Data/Hora da manutenção
set @usuario=(select System_User) -- Usuario da manutenção
insert into LogCliente values (@codigo,@banco,@agencia,@conta,@data,@usuario,@comando) ;
select * from cad_cliente;
select * from logcliente;
[pic 1]
insert cad_cliente values(101,'João',237,669,12345);
insert cad_cliente values(202,'Mara',341,771,67890);
insert cad_cliente values(303,'Luis',479,268,13579);
insert cad_cliente values(888,'Aldo',888,888,88888);
insert cad_cliente values(999,'Malu',999,999,99999);
select * from cad_cliente;
select * from logcliente;
[pic 2]
TRIGGER PARA DELETE:
create trigger Trig_LogCliente_DEL
...