Не удается создать триггер с использованием SQLPlus в Oracle - PullRequest
1 голос
/ 15 июня 2009

Я изучаю Oracle и хотел попробовать создать триггер. Я попробовал этот пример из книги в sqlplus.

SQL> CREATE OR REPLACE TRIGGER policy_bull BEFORE insert or update
  2  ON emp
  3  FOR EACH ROW
  4  BEGIN
  5    :new.salary := 200;
  6  END
  7  /

ОШИБКА в строке 1: ORA-04089: невозможно создать триггеры для объектов, принадлежащих SYS

, хотя я вошел в систему как SYS, используя

sqlplus "sys / oracle as sysdba"

Ответы [ 4 ]

7 голосов
/ 15 июня 2009

Вам нужно ввести / в пустую строку, чтобы указать SQLPLUS запустить оператор.

6 голосов
/ 15 июня 2009

Oracle запрещает создавать триггеры на объектах, принадлежащих SYS.

Вы создали таблицу emp как SYS? Вы, вероятно, хотите быть обычным пользователем, чтобы сделать это. emp не похож на системный стол.

0 голосов
/ 11 мая 2014

SQL> СОЗДАТЬ ИЛИ ЗАМЕНИТЬ TRIGGER policy_bull ДО вставки или обновления 2 Заработная плата на EMP 3 ДЛЯ КАЖДОГО РЯДА 4 НАЧАТЬ 5: новая зарплата: = 200; 6 КОНЕЦ 7 /

Вы должны ввести столбец, в котором "NEW SALARY" - это число, равное SALARY, так что ... или обновить SALARY в EMP ...

0 голосов
/ 29 июля 2009

Я думаю, что точка с запятой отсутствует после END. Также упомяните SYS.emp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...