Простой. Я немного newvbie с PLSql, и сообщения об ошибках oracle никогда не слишком полезны.Простые триггеры оракула
Я хочу сделать простой триггер для обновления столбца с текущей датой, то есть «измененной датой» столбца таблицы. Однако получить странную ошибку.
Идея проста
create table test1 (tcol varchar2(255), tcol2 varchar2(255))
CREATE OR REPLACE TRIGGER testTRG
AFTER INSERT OR UPDATE ON test1
FOR EACH ROW
BEGIN
update test1
set tcol2 = to_char(sysdate)
where tcol = :OLD.tcol;
END;
insert into test1 (tcol) values ('test1');
это выскакивает ошибка:
ORA-04091: table RAIDBIDAT_OWN.TEST1 is mutating, trigger/function may not see it
ORA-06512: at "RAIDBIDAT_OWN.TESTTRG", line 2
ORA-04088: error during execution of trigger 'RAIDBIDAT_OWN.TESTTRG'
ли кто-нибудь есть быстрое решение для этого?
cheers,
f.
Поскольку вы сказали, что таблица имеет varchar для столбца назначения, я бы рекомендовал делать 'to_char (sysdate,', то есть 'to_char (sysdate, 'YYYY-MM-DD HH24: Mi: SS') ', чтобы быть явным в отношении формата сохраняемой даты, вместо implicilty, принимающего' NLS_DATE_FORMAT', который может быть другим для разных сеансов. –