我在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