ошибка в триггере

копосов нв
Дата: 26.05.2006 13:04:00
Пишу триггер
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;
ошибка пропадает.
Прошу ликбез. И что можно сделать?
Takurava
Дата: 26.05.2006 13:12:48
ORA-04084 cannot change NEW values for this trigger type

Cause: New trigger variables can only be changed in before row insert or update triggers.

Action: Change the trigger type or remove the variable reference.
копосов нв
Дата: 26.05.2006 13:13:42
AFTER заменил на BEFORE вроде работает ... сейчас тестирую
А смысл?
Дата: 26.05.2006 13:15:55
Смысл менять значения в псевдозаписи :NEW в триггере AFTER INSERT OR UPDATE? Да это и делать нельзя...
копосов нв
Дата: 26.05.2006 13:51:38
Всё работает ... всем спасибо за комментарии ....

Немного перекосило ... мол читать могу :new значит и менять можно