[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