Я получаю сообщение об ошибке ORA-04091 (перепишите триггер (или функцию), чтобы он не читал эту таблицу.) Каждый раз, когда я запускаю триггер.Oracle - переписать триггер
Вот триггер:
create or replace TRIGGER comment_date_trigger
BEFORE INSERT OR UPDATE
ON "comment"
FOR EACH ROW
DECLARE
date_article TIMESTAMP;
date_parent TIMESTAMP;
BEGIN
IF :NEW."comment_parent_id" IS NOT NULL THEN
SELECT "comment_date" INTO date_parent FROM "comment_view" WHERE "comment_id" = :NEW."comment_parent_id";
END IF;
SELECT "article_date" INTO date_article FROM "article" WHERE "article_id" = :NEW."comment_article_id";
IF :NEW."comment_date" > SYSTIMESTAMP THEN
RAISE_APPLICATION_ERROR(-20003, '...');
ELSIF :NEW."comment_date" < date_article THEN
RAISE_APPLICATION_ERROR(-20005, '...');
ELSIF :NEW."comment_date" < date_parent THEN
RAISE_APPLICATION_ERROR(-20006, '...');
END IF;
END;
Что самое простое решение, чтобы решить эту проблему, пожалуйста? Как вы могли видеть, я попытался использовать представление, но проблема остается.
Спасибо.
Работает ли она, если вы меняете * перед вставкой или обновлением * до * после вставки или обновления *? Это должен быть тот же эффект, поскольку вы не намерены изменять какие-либо новые. значения, и в итоге вы откажетесь от транзакции, если она не пройдет проверку. –
Это все равно. – KRiSTiN