Эй, я пытаюсь создать триггер в моей базе данных Oracle, который изменяет все остальные записи, кроме только что измененной, и запускает триггер на 0. Поскольку я обновляю записи в той же таблице, что и запустил триггер я получил ошибку таблицы мутаций. Чтобы решить эту проблему, я поместил код в качестве анонимной транзакции, однако это вызывает тупик.
Триггерный код:
CREATE OR REPLACE TRIGGER check_thumbnail AFTER INSERT OR UPDATE OF thumbnail ON photograph
FOR EACH ROW
BEGIN
IF :new.thumbnail = 1 THEN
check_thumbnail_set_others(:new.url);
END IF;
END;
Код процедуры:
CREATE OR REPLACE PROCEDURE check_thumbnail_set_others(p_url IN VARCHAR2)
IS PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
UPDATE photograph SET thumbnail = 0 WHERE url <> p_url;
COMMIT;
END;
Я предполагаю, что я вызываю тупик, потому что триггер запускает себя внутри себя. Есть идеи?