Navicat 觸發器ORA-24344: success with compilation error


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。

新建查詢窗口;

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

寫在最后

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM