在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
......或者有解决方法吗?非常感谢!