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。
新建查询窗口;
写好触发器脚本,点击运行。
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/15903811.html