DB2 for IBM System iでは、以下でMYLOGTABLE
行われるすべての挿入操作で記録するために、このトリガーを作成しますMYCHECKEDTABLE
。
SET SCHEMA MYSCHEMA;
CREATE TRIGGER MYTRIGGER AFTER INSERT ON MYCHECKEDTABLE
REFERENCING NEW AS ROWREF
FOR EACH ROW BEGIN ATOMIC
INSERT INTO MYLOGTABLE -- after creation becomes MYSCHEMA.MYLOGTABLE
(MMACOD, OPTYPE, OPDATE)
VALUES (ROWREF.ID, 'I', CURRENT TIMESTAMP);
END;
DBMSは、トリガー本体をMYSCHEMA.MYLOGTABLE
ハードコードされた状態で格納します。
ここで、スキーマ全体を新しいスキーマとしてコピーするとしますNEWSCHEMA
。NEWSCHEMA.MYCHECKEDTABLE
ログにレコードを挿入すると、レコードはのMYSCHEMA.MYLOGTABLE
代わりに追加されNEWSCHEMA.MYLOGTABLE
ます。つまり、トリガーとそのテーブルが存在するスキーマに追加されます。これが大きな問題の原因です!! また、多くのユーザーが私の制御なしでスキーマをコピーできるため...
では、トリガー本体で、トリガーが存在するスキーマを指定する方法はありますか?このようにして、ログレコードを正しいに書き込みますMYLOGTABLE
。のようなものPARENT SCHEMA
...または回避策はありますか?どうもありがとう!