2016-11-26 243 views
0

在已编译的表上创建触发器,并显示消息“触发器已创建”。触发器在操作中未触发

但是在特定表上的操作中,触发器不会触发。

这有什么问题,或者有什么疑问?

+6

[编辑]你的问题,并添加触发器代码和你期望触发触发器的SQL。并告诉我们你正在使用哪个DBMS(Postgres,Oracle,...) –

+2

[我如何问一个**好**问题?](http://stackoverflow.com/help/how-to-ask) –

+0

我使用Oracle – codepoetly

回答

0

检查您的触发器是否处于禁用状态。如果是,请启用触发器。

ALTER TABLE表名启用触发器tr_name

+0

Im使用Oracle – codepoetly

+0

“ALTER TABLE fees ENABLE TRIGGER msg;”给出错误信息“ORA 00905 missing keyword” – codepoetly

+0

SQL> alter table fees enable trigger msg; alter table fees enable触发msg * 错误在第1行: ORA-00905:缺少关键字 – codepoetly

0

如果您正在使用甲骨文,你可以尝试使触发

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; 
+0

“ALTER TABLE fees ENABLE TRIGGER msg;”给出错误消息“ORA 00905缺少关键字” - – codepoetly

+0

即时通讯使用oracle – codepoetly

+0

SQL> alter table fees enable trigger msg; alter table fees enable trigger msg * 错误在第1行: ORA-00905:缺少关键字 – codepoetly

0

检查触发是否有效并启用:

SELECT * FROM User_Objects t WHERE t.OBJECT_TYPE = 'TRIGGER'; 
SELECT t.* FROM User_Triggers t; 
+0

我运行了这些命令,它没有返回任何行。所以它无效。我现在如何使其有效? – codepoetly

+0

第二个查询返回所有触发器和我缺少的触发器。现在我该怎么做? – codepoetly

+0

如果它是无效的,你应该编辑触发器并重新编译它,也许它有语法错误或这个触发器相关的其他对象是无效的。 – amirdavod