触发器在操作时未触发
Posted
技术标签:
【中文标题】触发器在操作时未触发【英文标题】:Trigger not firing on operation 【发布时间】:2016-11-26 07:32:07 【问题描述】:在已编译的表上创建触发器,并显示消息“触发器已创建”。
但在对特定表进行操作时,触发器不会触发。
可能是什么问题,或者这里有什么问题?
【问题讨论】:
edit 您的问题并添加触发器代码和您希望触发触发器的 SQL。并告诉我们您正在使用哪个 DBMS(Postgres、Oracle、...) How do I ask a good question? 我在使用 Oracle 【参考方案1】:检查触发器是否有效并启用:
SELECT * FROM User_Objects t WHERE t.OBJECT_TYPE = 'TRIGGER';
SELECT t.* FROM User_Triggers t;
【讨论】:
我运行了这些命令,但它没有返回任何选定的行。所以它无效。我如何使它现在有效? 第二个查询返回所有触发器,而我的触发器丢失了。我现在该怎么做? 如果它无效,你应该编辑触发器并重新编译它,可能它有语法错误或与此触发器相关的其他对象无效。 第二个查询有状态栏是否启用? 当我添加“where name = trigger_name”子句时,第二个查询返回“没有返回行”。所以触发器没有注册(如果我可以这么称呼它)【参考方案2】:如果您使用的是 oracle,您可以尝试启用触发器
ALTER TABLE tblName ENABLE TRIGGER trgName --WRONG
更正语法(感谢评论):
ALTER TRIGGER trg_name ENABLE;
检查您的触发器是否存在、有效/无效等:
SELECT * from dba_triggers WHERE LOWER(trigger_name) LIKE '%salupdate%';
SELECT * FROM dba_objects WHERE LOWER(object_name) LIKE '%salupdate%';
用户在触发器中使用 DBMS_OUTPUT.PUT_LINE,但在输出中看不到,以下解决了问题:
SET SERVEROUTPUT ON;
【讨论】:
"ALTER TABLE 费用启用触发消息;"给出错误消息“ORA 00905 缺少关键字”- 我正在使用 oracle SQL> 更改表费用启用触发器消息; alter table fee enable trigger msg * ERROR at line 1: ORA-00905: missing keyword 通过 ALTER TRIGGER msg ENABLE 启用触发器;触发器已成功更改。还使用 ALTER TABLE 更改表触发器启用所有触发器:表已成功更改。但是触发器仍然没有在更新时触发! 你能分享一下你的触发脚本的伪代码吗?以上是关于触发器在操作时未触发的主要内容,如果未能解决你的问题,请参考以下文章