[firebase-br] Usar trigger insert or update

Paulo Geloramo paulogeloramo em terra.com.br
Sáb Set 26 09:42:04 -03 2009


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






Mais detalhes sobre a lista de discussão lista