Oracle - триггер на таблице, которая обновляет другую таблицу - проблема с правами доступа - PullRequest
0 голосов
/ 03 февраля 2020

У меня странная проблема. Я пытаюсь написать TRIGGER, чтобы при каждом обновлении DEPTNO в таблице SCOTT.DEPT он обновлял мою другую таблицу (SCOTT.EMP) новым DEPTNO.

Я получал ORA-01031: ошибка с недостаточными привилегиями , что странно, потому что я вошел в систему как система, я сам создал эту таблицу (создать ..) и мой другой триггер, который я написал, работает правильно.

Кстати. Правильно ли написан этот триггер? Любая помощь будет оценена.

CREATE OR REPLACE TRIGGER Trigger1
BEFORE DELETE OR INSERT OR UPDATE OF DEPTNO ON SCOTT.DEPT
FOR EACH ROW
BEGIN
     UPDATE SCOTT.EMP 
     SET DEPTNO = :NEW.DEPTNO;
END;

1 Ответ

1 голос
/ 03 февраля 2020

Я вошел в систему как система "

Вы должны быть осторожны с этим. SYSTEM - это учетная запись, принадлежащая Oracle, используемая для ведения базы данных, поэтому существуют риски для изменения его схема.

В этом случае вы создали триггер в схеме SYSTEM , потому что вы ничего не добавляли к имени триггера. Обычно триггеры принадлежат схеме, которой принадлежит базовый таблица, в данном случае SCOTT.

Я предлагаю вам удалить триггер из схемы SYSTEM и заново создать его в SCOTT.

...