Пишу триггер
CREATE OR REPLACE TRIGGER setidpriznaki1
AFTER INSERT OR UPDATE OF numpirgal
ON pir2pir
FOR EACH ROW
WHEN (TRIM (NEW.numpirgal) IS NOT NULL)
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
fnumpirgal pir2pir.numpirgal%TYPE;
fidpriznaki priznaki.ID%TYPE;
BEGIN
SELECT TRIM (VALUE)
INTO fidpriznaki
FROM installations
WHERE UPPER (parameter) = UPPER ('UpdateProblemIdPriznaki1');
IF fidpriznaki IS NOT NULL
THEN
IF :NEW.idparent = 0
THEN
:NEW.id_priznaki1 := fidpriznaki;
ELSE
UPDATE pir2pir
SET id_priznaki1 = fidpriznaki
WHERE ID = :NEW.idparent;
END IF;
END IF;
COMMIT;
END;
/
|
по логике работы всё понятно, но вылетает ошибка:
ORA-04084: невозможно изменить значения NEW для этого типа триггеразначение new вот в этой строке
...
:NEW.id_priznaki1 := fidpriznaki;
...
|
пробовал так
fidpriznaki := fidpriznaki; |
ошибка пропадает.
Прошу ликбез. И что можно сделать?