触发器在操作时未触发

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 更改表触发器启用所有触发器:表已成功更改。但是触发器仍然没有在更新时触发! 你能分享一下你的触发脚本的伪代码吗?

以上是关于触发器在操作时未触发的主要内容,如果未能解决你的问题,请参考以下文章

从按钮操作中更改时未触发 SwiftUI 绑定

应用程序在后台时未触发地理围栏通知

鼠标退出按钮时未触发 MouseExited

OnTokenValidated 事件在应用程序部署为 Azure Web App 时未触发,但在本地运行时触发

移动事件时未触发按钮单击

AlarmManager 在请求时未触发