例如,如果删除客户,则将删除其他表(S)上的所有相关行。怎么做那个mysql,我花了一个小时尝试了很多解决方案,但没有人工作。enter image description here
答案 0 :(得分:2)
最简单的方法实现这一点是与 ON DELETE CASCADE
选项的设计相关的表格。
基本上,当您设计具有外键的数据库表(其他表上的主键)时,您可以为该外键设置ON DELETE CASCADE
。这意味着当在主表上删除记录(此外键为主键的表)时,其他表上的所有相关记录也将被删除。
因此,你不需要考虑创造"疯狂"查询以删除多个表上的相关数据。
您可以在以下链接中了解有关ON DELETE CASCADE
的更多信息:mysqltutorial.org/mysql-on-delete-cascade
答案 1 :(得分:1)
您必须首先DELETE
地址,客户和关系之后
或者您可以尝试使用DELETE级联...但要小心http://www.mysqltutorial.org/mysql-on-delete-cascade/
也看到了这一点:MySQL on delete cascade. Test Example
DELETE FROM Addresses WHERE AddressID IN (SELECT AddressID FROM Custormers_Addresses WHERE CustormerID = ID)
那么..删除客户
DELETE FROM Customers WHERE CustomerID = ID
那么..删除关系
DELETE AddressID FROM Custormers_Addresses WHERE CustormerID = ID