我在MySQL中有表「A」。它有一些對其他表格(「B」,「C」,「D」...)進行級聯刪除的參考。當某些東西從「A」刪除時,我需要使用觸發器。當我直接從「A」刪除記錄時,此觸發器起作用。但它不適用於級聯刪除。 是否有任何版本的MySQL存在的地方我的觸發器將與級聯刪除工作?或者,也許,還有另一種方式來調用級聯刪除觸發器調用
回答
我每天討厭mysql更多 – 2012-04-16 19:47:08
是的,他們在過去的5年裏沒有做任何修復。 – boreq 2012-10-09 12:57:13
我剛剛發現這個問題,它是超級愚蠢的:-( – 2015-04-04 05:48:45
總結從@Niel德威特和@Browny林答案:
- 可悲的是級聯刪除不會在MySQL激活觸發器。
- 一種解決方案是不使用級聯刪除,而是通過另一個觸發器實現自動刪除。
使用另一個刪除觸發器不是一個合適的方法,因爲如果我在tableA上有一個觸發器並且在tableB中刪除了一行,並且如果我有一個觸發器aon tableB用於更新tableA, – Shafizadeh 2015-09-18 21:05:16
CREATE TABLE doc (
docID INTEGER NOT NULL AUTO_INCREMENT,
langCode CHAR(2) NOT NULL,
title VARCHAR(32),
PRIMARY KEY (docID, langCode)
) Type=InnoDB;
CREATE TABLE author (
authorID INTEGER NOT NULL AUTO_INCREMENT,
docID CHAR(2) NOT NULL,
name VARCHAR(32),
PRIMARY KEY (authorID),
FOREIGN KEY (docID) REFERENCES doc(docID) ON DELETE CASCADE ON UPDATE CASCADE
) Type=InnoDB;
這是http://dev.mysql.com/doc/refman/5.7/en/innodb-foreign-key-constraints.html的評論的直接副本。 – hichris123 2016-05-03 23:31:05
這似乎沒有試圖回答日一切問題。 – Pang 2016-10-31 06:10:36
讓我分享如何我已經從第一天開始,我發現它的存在「修復」這個問題。我將級聯表中的觸發器複製到直接刪除的第一個表中。它只是工作。
很多時候這是複製/粘貼的問題,偶爾它需要大量重寫代碼。
最好的部分是,當Oracle最終修復此問題時錯誤您只能從上述表中刪除觸發器代碼。瞧!
- 1. 級聯刪除通觸發
- 2. SQL Server觸發器刪除或級聯刪除
- 3. 的Postgres避免觸發刪除級聯
- 4. SQL Server觸發器遞歸在級聯刪除
- 5. 級聯觸發器SQLite中
- 6. 排在觸發刪除不調用其刪除觸發器在MSSQL
- 7. 刪除觸發器
- 8. DB2 SQL多級觸發器級聯
- 9. 手動調用級聯刪除?
- 10. 級聯刪除
- 11. 級聯/刪除
- 12. 級聯刪除
- 13. 關於刪除級聯錯誤 - 如何用觸發器解決它?
- 14. Django的內容類型框架不會觸發級聯刪除
- 15. 用腳本刪除級聯
- 16. 使用級聯刪除
- 17. SQL - 刪除級聯用於?
- 18. 刪除級聯備用
- 19. 級聯刪除用例
- 20. Grails級聯刪除?
- 21. 級聯軟刪除
- 22. 級聯刪除mysql
- 23. Oracle級聯刪除
- 24. MySql刪除級聯
- 25. MongoMapper +級聯刪除?
- 26. JPA級聯刪除
- 27. Yesod刪除級聯
- 28. LLBLGen級聯刪除?
- 29. SQL級聯刪除
- 30. NHibernate級聯刪除
這是在應用程序代碼中執行邏輯的一個參數,而不是觸發器和級聯的複雜設置。 – 2016-04-30 18:56:26