2009-06-15 67 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工資的更新...