トリガー(Firebird 2.5)から他のテーブルを更新することは可能ですか(私はそう思います:はい)。たとえば、次のような更新後のトリガーを持つテーブル Xが 1 つあります。
begin
if (new.CODE<>old.CODE) then
BEGIN
post_event 'CODE_CHANGE';
UPDATE Y SET CODE=10 WHERE ID=1;
END
end
また
begin
if (new.CODE<>old.CODE) then
BEGIN
post_event 'CODE_CHANGE';
EXECUTE STATEMENT ('UPDATE Y SET CODE=10 WHERE ID=1');
END
end
しかし、うまくいきません (テーブル Yは変化しません)。
トリガーの完全な定義 (理解を深めるため)
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 ^^
そして2番目の問題:UPDATEコマンドにパラメーターを与える方法(テーブル Y)-上記のコードの値「 10 」の代わりに、 new.CODE (テーブル Xからの新しい値)を次のように置きたいということです:
UPDATE Y SET CODE=new.CODE WHERE ID=1
アドバイスありがとうございます。
アートク