我有一個組件數據庫。每個組件都是特定的類型。這意味着組件和類型之間存在多對一的關係。當我刪除一個類型時,我想刪除所有具有該類型外鍵的組件。但是如果我沒有弄錯,級聯刪除將刪除該組件時刪除的類型。有什麼辦法可以做我描述的嗎?如何在mysql中刪除級聯使用?
33
A
回答
53
以下是您在組件表中包含的內容。
CREATE TABLE `components` (
`id` int(10) unsigned NOT NULL auto_increment,
`typeId` int(10) unsigned NOT NULL,
`moreInfo` VARCHAR(32),
-- etc
PRIMARY KEY (`id`),
KEY `type` (`typeId`)
CONSTRAINT `myForeignKey` FOREIGN KEY (`typeId`)
REFERENCES `types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
)
請記住,您需要使用InnoDB存儲引擎:默認的MyISAM存儲引擎不支持外鍵。
1
您必須將您的外鍵約束定義爲ON DELETE CASCADE。
說明:您需要使用InnoDB存儲引擎,他默認的MyISAM存儲引擎不支持外鍵關係。
CREATE TABLE `table2` (
`id` int(11) NOT NULL auto_increment,
`name` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `ids` (`ids`)
CONSTRAINT `foreign` FOREIGN KEY (`ids`)
REFERENCES `table2` (`ids`) ON DELETE CASCADE ON UPDATE CASCADE
)
1
使用此SQL
DELETE T1,T2 FROM T1 INNER JOIN T2 ON T1.key = T2.key WHERE條件
+0
按照操作要求,這不使用`CASCADE`功能。 – displayname 2016-08-02 14:58:04
相關問題
- 1. 級聯刪除mysql
- 2. MySql刪除級聯
- 3. MySQL刪除級聯
- 4. MySQL - 刪除級聯
- 5. 如何在MySQL MyISAM存儲引擎上使用刪除級聯?
- 6. 在MySQL控制檯中級聯刪除
- 7. MySql刪除級聯概念?
- 8. 如何使用SQL Server級聯刪除?
- 9. 如何在Titan DB中級聯刪除?
- 10. 如何在Grails中級聯刪除?
- 11. 使用級聯刪除
- 12. NHibernate,「在刪除級聯」,級聯刪除相關表中的行?
- 13. mysql刪除級聯不起作用
- 14. MySql從兩個表中級聯刪除
- 15. 如何在MySQL工作臺中設置級聯刪除?
- 16. 如何在Laravel中使用級聯刪除?
- 17. 如何在Oracle 11g中使用SQL Developer進行刪除級聯?
- 18. 如何在PostgreSQL中使用Knex.js進行級聯刪除?
- 19. 如何在本場景中使用MongoEngine級聯刪除?
- 20. 級聯刪除
- 21. 級聯/刪除
- 22. 級聯刪除
- 23. 如何級聯Hibernate中的刪除?
- 24. MySQL刪除級聯。測試示例
- 25. MySQL外鍵約束,級聯刪除
- 26. 級聯刪除MySQL和ASP.NET MVC4
- 27. 使用EF禁用級聯刪除?
- 28. MySQL - 級聯更新工作,但級聯刪除不
- 29. 如何在Linq中執行多級級聯刪除?
- 30. 使用Mongoose中間件級聯刪除陣列刪除鉤子
NB,ON UPDATE CASCADE可能是一個好主意,如果你使用它來鏈接一個主鍵,因爲它應該是不可變的,依靠這個建議數據庫可能需要重新設計,但我想如果你用一個唯一但不是主鍵的外鍵連接它,那就沒關係。 – ThinkBonobo 2013-12-28 03:09:56