2014-05-02 53 views
0

我嘗試在Oracle DB 11g中創建觸發器,但沒有成功。Oracle Db 11g觸發器語法

CREATE OR REPLACE TRIGGER mytable_JOBUPD 
AFTER UPDATE OF jedan, trip ON mytable 
FOR EACH ROW 
BEGIN 
ADD_mytable_JOB (:old.jedan, :old.trip, 'update', sysdate); 
END mytable_JOBUPD;​ 

這個錯誤被分派:

Compilation failed,line 1 (18:23:50) 

PLS-00103:出現符號「」在需要下列之一時:在出......長雙裁判焦時間時間戳間隔日期二進制國家字符nchar編譯失敗,第3行(18:23:50) PLS-00103:在遇到下列其中一項時遇到符號「BEGIN」:不是null,無限懸空空編譯失敗,第5行(18:23 :50) PLS-00103:遇到下列其中一項時遇到符號「END」:,;返回返回

因此,一切都是問題,但是什麼?我的列在數據庫中輸入正常,但我仍然有這個錯誤?

回答

0

替換「FOR EACH ROW」與此:

REFERENCING OLD AS old NEW AS new FOR EACH ROW 

我在11g中代替幾個類似的觸發器遵循同樣的語法。

編輯:在開始之前,您可能還需要一個聲明。如果沒有任何聲明的變量,我這樣做:

DECLARE 
    -- no variables 
BEGIN 
    --Code 

編輯2:

你的例子後的語法是正確的,否則。這些錯誤似乎表明缺少(或額外)引號,逗號或分號。

+0

還沒有運氣:( – user2803095