Таблица мутирует, триггер / функция может ее не видеть / ORA-04088: ошибка во время выполнения триггера - PullRequest
0 голосов
/ 02 октября 2018

Вот мой триггер, который мне трудно реализовать.Он создает триггер, но имеет ошибку после внесения изменений в цену.Следующим триггером является добавление строки в таблицу DAYCARE_PRICE, когда в таблице DAYCARE происходит изменение (обновление) цены в любой из ее строк.

CREATE OR REPLACE TRIGGER daycare_price_history_trg
BEFORE UPDATE ON DAYCARE
FOR EACH ROW
BEGIN
    IF :NEW.price != :OLD.price THEN 
        INSERT INTO DAYCARE_PRICE(daycare_id, old_price, new_price, date_of_change)
        SELECT daycare_id, :NEW.price, :OLD.price, SYSDATE
        FROM DAYCARE;
    END IF;
END;

1 Ответ

0 голосов
/ 02 октября 2018

Используйте предложение VALUES вместо выбора из таблицы (Владелец триггера) для Вставки.

CREATE OR REPLACE TRIGGER daycare_price_history_trg BEFORE
     UPDATE ON daycare
     FOR EACH ROW
BEGIN
     IF
          :new.price !=:old.price
     THEN
          INSERT INTO daycare_price (
               daycare_id,
               old_price,
               new_price,
               date_of_change
          ) VALUES (
               :new.daycare_id,
               :old.price,
               :new.price,
               SYSDATE
          );
     END IF;
END;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...