我遇到了一個有趣的問題。我想創建兩個觸發器,trigger1將在DROP TABLE
上觸發,並在ALTER TABLE
上觸發trigger2。我想讓trigger1和trigger2在任何表被刪除或更改時觸發,但不幸的是,我不知道這樣做的語法,也找不到這種觸發器的語法。在MySQL中,我只能編寫在INSERT
,UPDATE
或DELETE
之前/之後觸發的觸發器,但現在我想編寫觸發器,這些觸發器適用於數據庫級別並將觸發表事件。有人能幫助我嗎?MySQL觸發器在更改或刪除時觸發
回答
你在找什麼叫做「DDL觸發器」。 MySQL不支持他們
有這個SourceForge request,但我不知道任何人有多麼嚴重有關添加它
+1優秀的答案!但是,我希望你不對,他們有這個解決方案。我會等待其他答案,並將繼續研究,如果我找到解決方案,我會自己回答我的問題。如果不是,我可能會接受你的。謝謝。 – 2011-12-28 15:38:13
您的鏈接今天沒有任何內容,但是我發現[此Worklog條目](https://dev.mysql.com/worklog/task/?id=2418);希望它有幫助:-) – watery 2015-09-29 09:37:25
這是不可能使用一個觸發下降statements.According到documentation觸發器是在激活
INSERT:每當一個新行被插入到表中的觸發器被激活;例如,通過INSERT,LOAD DATA和REPLACE 聲明。
UPDATE:每當行被修改時觸發器被激活;例如,通過UPDATE語句。
DELETE:無論何時從表中刪除行,都會激活觸發器;例如,通過DELETE和REPLACE語句。 但是,表中的DROP TABLE和TRUNCATE TABLE語句不激活此觸發器,因爲它們不使用DELETE。
它沒有對alter table做任何說明,但我希望只有DML語句能夠觸發一個觸發器。
+1我讀過文檔,並沒有找到我正在尋找的內容,但是您的答案可能對沒有閱讀文檔的其他SO用戶有用。 – 2011-12-28 15:20:41
使用InnoDB時,TRUNCATE TABLE語句將始終在5.0.3之前的MySQL上使用DELETE,並且在有約束時使用DELETE。 – 2014-10-18 17:57:41
PROCEDURE `pr_new_type`(IN column_name varchar(10))
BEGIN
SET @queryText = CONCAT('ALTER TABLE `user_rights` ADD ', column_name, ' BINARY(9) NULL');
PREPARE query FROM @queryText;
EXECUTE query;
DEALLOCATE PREPARE query;
END
測試這個
這是一個程序,而不是觸發器。另外,我的問題涉及兩個觸發器,它們將分別在alter和drop命令上運行。 – 2013-04-17 20:17:00
- 1. 觸發更新或刪除mysql的
- 2. SQL - 修改或刪除觸發器
- 3. MySQL觸發器 - 更新後刪除
- 4. 刪除MySQL狀態更新觸發器
- 5. 更新或刪除SQL觸發器
- 6. MySQL觸發器更改
- 7. mysql - 觸發器表更改
- 8. 刪除觸發器
- 9. 在更新/刪除/插入時使用Mysql觸發器
- 10. MySQL觸發問題:只有在列更改時觸發?
- 11. mysql觸發刪除原始
- 12. MySQL的觸發刪除
- 13. 在-更新和-刪除觸發器
- 14. 更新觸發器後MySQL中的NULL處理觸發器僅在數據更改時觸發
- 15. MySql觸發更新,插入和刪除
- 16. 在MySQL觸發器更改值與PHP?
- 17. 刪除MYSQL中的觸發器
- 18. Mysql觸發器來選擇和刪除
- 19. 刪除後刪除觸發器只會觸發嗎?
- 20. 刪除一行會導致更新觸發器觸發嗎?
- 21. 更換觸發程序,但不刪除觸發器
- 22. 從INSERT觸發器更新時觸發更新後未觸發
- 23. SQL - 刪除更新觸發
- 24. 如何在切換觸發器更改時觸發事件?
- 25. 如何在密碼更改時觸發sql觸發器
- 26. 外鍵或刪除觸發器?
- 27. 當0行受到影響時觸發刪除觸發器
- 28. 刪除變異觸發器
- 29. 無法刪除觸發器
- 30. 刪除觸發器SQL 2005
@Mythje:爲SQL服務器。他問了一下MySql – 2011-12-28 15:02:05