2009-06-15 36 views
1

我正在学习Oracle并希望尝试创建触发器。我在sqlplus中尝试了这个例子。 ORA-04089:无法创建使用无法在Oracle中使用SQLPlus创建触发器

的sqlplus “sys/oracle和SYSDBA” 由SYS

即使我登录为SYS所拥有的对象触发

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行错误

+0

你能尝试没有分号? – jle 2009-06-15 01:47:43

+0

这本书是否告诉你以sys身份登录? sys与unix中的“root”用户类似 - 仅用于管理系统。通常情况下,你要做的第一件事情就是创建一个拥有应用程序对象的用户。对于实验,您可能会发现用户“scott”,密码“tiger”已经为此创建(但是,在新实例中,您可能必须先解锁该帐户)。 – 2009-06-15 04:46:19

回答

7

您需要在空行上键入/以指示SQLPLUS运行该语句。

+1

我看到你已经编辑了你的问题来包含/ now。 – 2009-06-15 04:43:41

6

Oracle禁止在SYS拥有的对象上创建触发器。

您是否将SYS创建为表emp?你可能想成为一个普通用户来做到这一点。 emp听起来不像系统表。

0

我认为END后分号丢失。 还别说SYS.emp

0

SQL> CREATE OR REPLACE TRIGGER policy_bull之前插入或EMP 3更新 2 SALARY的FOR EACH ROW 4 BEGIN 5:new.salary:= 200; 6 END 7/

你必须键入的列,其中“新的工资”是PPL其薪金等等...或EMP工资的更新...