В DB2 для 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;
СУБД хранит тело триггера с жестким кодом MYSCHEMA.MYLOGTABLE
.
Теперь представьте, что мы копируем всю схему как новую схему NEWSCHEMA
. Когда я вставляю запись в NEWSCHEMA.MYCHECKEDTABLE
, запись будет добавлена в MYSCHEMA.MYLOGTABLE
вместо NEWSCHEMA.MYLOGTABLE
, т. Е. В схеме, где находятся триггер и его таблица. Это является причиной больших проблем! Кроме того, потому что многие пользователи могут копировать схему без моего контроля ...
Итак, есть ли способ указать в теле триггера схему, в которой находится триггер? Таким образом, мы запишем запись журнала в правильном MYLOGTABLE
. Что-то вроде PARENT SCHEMA
... Или есть обходной путь ?
Большое спасибо!