Firebird Trigger, die Aktualisierung anderer Felder der Tabelle

Ist es möglich (ich nehme an: ja), um die Aktualisierung anderer Tabelle von trigger (Firebird 2.5).
Ich habe zum Beispiel eine Tabelle X mit trigger nach dem update so:

begin
  if  (new.CODE<>old.CODE)  then
  BEGIN
  post_event  'CODE_CHANGE';
  UPDATE Y SET CODE=10 WHERE ID=1;
  END
end

oder

begin
  if  (new.CODE<>old.CODE)  then
  BEGIN
  post_event  'CODE_CHANGE';
  EXECUTE STATEMENT ('UPDATE Y SET CODE=10 WHERE ID=1');
  END
end

aber es funktioniert nicht (Tabelle Y nicht ändern).

Vollständige definition der trigger (zum besseren Verständnis)

SET TERM ^^ ;
CREATE TRIGGER ABC FOR X ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0 AS
begin
  if  (new.CODE<>old.CODE)  then
  BEGIN
  post_event  'CODE_CHANGE';
EXECUTE STATEMENT ('UPDATE Y SET CODE=10 WHERE ID=1');
  END
  post_event 'CHANGE';
end ^^

Und zweites problem: wie zu geben, parameter zu AKTUALISIEREN, Befehl (für Tabelle Y) - ich meine, ich möchte anstelle des Wertes "10" im obigen code setzen neue.CODE (neuer Wert von Tabelle X) so etwas wie dieses:

UPDATE Y SET CODE=new.CODE WHERE ID=1

Danke für die Ratschläge.

Artik

  • Sie enthalten nur die trigger-Körper, was ist die vollständige definition des triggers (z.B. ist das ein VOR-oder ein AFTER UPDATE-trigger). Ich bin nicht sicher, ob es eine Rolle spielt, aber das beste ist, vollständig zu sein.
  • Danke, ich setzen (Bearbeiten meine Frage) vollständige definition meiner trigger.
InformationsquelleAutor Artik | 2013-01-31
Schreibe einen Kommentar