[firebase-br] RES: Usar trigger insert or update
Sandro
sandro_rebelo em ibest.com.br
Sáb Set 26 09:58:06 -03 2009
Faça uma só, podendo usar as variáveis de ação INSERTING OU UPDATING
CREATE TRIGGER TR_TESTE FOR FILHO
ACTIVE AFTER INSERT OR UPDATE POSITION 0
AS
BEGIN
IF (INSERTING) THEN
BEGIN
UPDATE PAI
SET TESTE = NEW.TESTE
WHERE ID = NEW.ID;
END
IF (UPDANTING) THEN
BEGIN
UPDATE PAI
SET TESTE = OLD.TESTE
WHERE ID = OLD.ID;
END
END
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Paulo Geloramo
Enviada em: sábado, 26 de setembro de 2009 09:42
Para: lista em firebase.com.br
Assunto: [firebase-br] Usar trigger insert or update
Olá Pessoal,
Firebird 2.1.3.18185
Usar uma trigger insert or update ou
usar duas trigger, conforme abaixo:
Se o campo TESTE não foi alterado na tabela FILHO,
usar NEW.TESTE pode retornar NULL?
Qual a abordagem mais indicada para o firebird 2.1.3?
1. uma trigger
CREATE TRIGGER TR_TESTE FOR FILHO
ACTIVE AFTER INSERT OR UPDATE POSITION 0
AS
BEGIN
UPDATE PAI
SET TESTE = NEW.TESTE
WHERE ID = NEW.ID;
END
ou
2. duas trigger
CREATE TRIGGER TR_TESTE FOR FILHO
ACTIVE AFTER INSERT POSITION 0
AS
BEGIN
UPDATE PAI
SET TESTE = NEW.TESTE
WHERE ID = NEW.ID;
END
e
CREATE TRIGGER TR_TESTE FOR FILHO
ACTIVE AFTER UPDATE POSITION 0
AS
BEGIN
UPDATE PAI
SET TESTE = OLD.TESTE
WHERE ID = OLD.ID;
END
Fiz teste com o primeiro caso, mas em alguns testes,
não esta atualizando teste, mas na maioria dos testes
a primeira opção funciona, não entendi porque ora
funciona e ora falha.
Por segurança estou pensando em adotar a segunda opção,
mas fiquei na dúvida, do por quê falha as vezes?
Como estão usando?
--
Paulo Geloramo
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista