[firebase-br] Trigger Universal - Um exemplo pratico
Francisco Carlos da Rocha Gomes
fcarlos em cpafac.embrapa.br
Sex Set 9 12:21:12 -03 2005
Colegas,
Segue abaixo um exemplo de trigger universal que eu utilizo numa das
minhas aplicacoes. Ele faz o seguinte: após (after) qualquer transacao
na tabela CoordRegional ele soma os valores dos registros da FK
CodCoordEst e grava-os na tabela da FK CoordEstadual.
Trata-se de um totalizador de dados da tabela CoordRegional
(tabela-filho) para a tabela CoordEstadual (tabela-pai). E funciona bem.
Espero que eu tenha ajudado.
Um abraço a todos,
Francisco Carlos
Embrapa
-Se abaixo o código do trigger -------------------------
Set Term !!
;
Create Trigger tgCoordRegAfter for CoordRegional
Active AFTER Insert or Update or Delete Position 0
As
Declare Variable vCodCoordEst Smallint;
Declare Variable vQtdCoordRegCad Smallint;
Declare Variable vQtdMunicipios Smallint;
Declare Variable vQtdEquipes Smallint;
begin
if (Inserting) then
vCodCoordEst = new.CodCoordEst;
else if (Updating) then
vCodCoordEst = new.CodCoordEst;
else if (Deleting) then
vCodCoordEst = old.CodCoordEst;
else Exit;
select Count(CodCoordEst), Sum(QtdMunicipios),
Sum(QtdEquipesCad)
from CoordRegional
where CodCoordEst = :vCodCoordEst
into :vQtdCoordRegCad, :vQtdMunicipios,
:vQtdEquipes;
if (vQtdMunicipios is null) then vQtdMunicipios = 0;
if (vQtdCoordRegCad is null) then vQtdCoordRegCad = 0;
if (vQtdEquipes is null) then vQtdEquipes = 0;
update CoordEstadual
set QtdMunicipios = :vQtdMunicipios,
QtdCoordRegCad = :vQtdCoordRegCad,
QtdEquipesCad = :vQtdEquipes
where CodCoordEst = :vCodCoordEst;
end !!
Set Term ; !!
---------------------------------------------------------
Augusto escreveu:
> Valeu
>
>
> ----- Original Message ----- From: "Rafael Cabral"
> <rafael.cabral em intercraft.inf.br>
> To: "'FireBase'" <lista em firebase.com.br>
> Sent: Friday, September 09, 2005 11:04 AM
> Subject: RES: [firebase-br] Trigger Universal
>
>
> Fala augusto.
>
> CREATE TRIGGER TRG_TABELA FOR TABELA
> BEFORE INSERT OR UPDATE OR DELETE
> AS
> BEGIN
> IF (INSERTING) THEN
> BEGIN
> --CÓDIGO QUANDO INSERE
> END
> IF (UPDATING) THEN
> BEGIN
> --CÓDIGO QUANDO ALTERA
> END
> IF (DELETING) THEN
> BEGIN
> --CÓDIGO QUANDO EXCLUI
> END
> END
> ^
>
> Espero ter ajudado.
>
> []s,
>
> Rafael Cabral
>
> -----Mensagem original-----
> De: lista-bounces em firebase.com.br
> [mailto:lista-bounces em firebase.com.br] Em
> nome de Augusto
> Enviada em: sexta-feira, 9 de setembro de 2005 10:25
> Para: FireBase
> Assunto: [firebase-br] Trigger Universal
>
> Pessoal,
>
>
> Alguem tem um exemplo de "trigger universal"
> que é executada tando para INSERT, UPDATE, DELETE e dentro dela decide
> o que
> fazer???
>
> Augusto
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br Para
> editar
> sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista