1.情景展示
在使用Navicat創建觸發器時,報錯信息如下:
ORA-24344: success with compilation error

2.原因分析
意思是:該觸發器創建成功,但是,編譯失敗。
如何解決?
3.解決方案
以Oracle為例進行示范說明
首先,我們需要確定的是:自己寫的SQL腳本到底有沒有問題?
最簡單的解決方案就是:把SQL放到plsql中進行執行。
查看代碼
CREATE
OR REPLACE TRIGGER TRIGGER_META_THEME_TABLE BEFORE INSERT ON META_THEME_TABLE FOR EACH ROW
BEGIN
IF
( NEW.ID IS NULL ) THEN
SELECT
SEQ_META_THEME_TABLE.NEXTVAL INTO :NEW.ID
FROM
DUAL;
END IF;
END;
我們可以看到:
在plsql當中,觸發器創建成功;
接下來,看一下該觸發器有沒有編譯錯誤?

在plsql當中,我們可以看到具體的錯誤原因。
按照錯誤提示進行修改:
CREATE OR REPLACE TRIGGER TRIGGER_META_THEME_TABLE
BEFORE INSERT ON META_THEME_TABLE
FOR EACH ROW
WHEN (NEW.ID IS NULL)
BEGIN
SELECT SEQ_META_THEME_TABLE.NEXTVAL INTO :NEW.ID FROM DUAL;
END;
再次執行,沒有報錯信息的話,就說明創建的觸發器可用。

說明:
使用Navicat對上述SQL進行美化的時候,Navicat會將:和NEW.ID分開,注意,它倆不能分開,如果分開的話,會導致觸發器和引起觸發器的操作無法運行!
4.其它
在Navicat當中,我們有兩種方式對觸發器進行可視化操作。
方式一:通過表操作;
選中要添加觸發器的表,右鍵,設計表;

點擊“觸發器”,在這里,我們可以定義觸發器的名稱、觸發條件(上述操作前觸發還是操作后觸發)、觸發器的時機(插入、更新、刪除)、觸發后需要執行的操作、是否啟用觸發器等進行操作。

方式二:通過觸發器窗口操作;
工具欄--》其它--》觸發器;

選中要修改的觸發器,點擊“設計觸發器”;

方式三:執行SQL。
新建查詢窗口;

寫好觸發器腳本,點擊運行。

