2016-11-26 240 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