我正在学习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”
答案 0 :(得分:7)
您需要在空行上键入/告诉SQLPLUS运行该语句。
答案 1 :(得分:6)
Oracle禁止在SYS拥有的对象上创建触发器。
您是否将表emp创建为SYS?您可能希望成为常规用户。 emp听起来不像系统表。
答案 2 :(得分:0)
我认为在END之后缺少一个分号。 还要提到SYS.emp
答案 3 :(得分:0)
SQL>在插入或更新之前创建或替换TRIGGER policy_bull EMP上的SALARY 2 3每行 4开始 5:new.salary:= 200; 6结束 7 /
你必须输入" NEW SALARY"是的,所以......或者在EMP上更新SALARY ......