MySQL - 如何删除多对多关系中的相关行
MySQL - How to delete related rows in a many to many relationship
例如,如果删除了一个客户,其他 table(S) 上的所有相关行都将被删除。如何做到这一点 mysql,我尝试了很多解决方案但没有一个成功。enter image description here
您必须先 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
实现此目的的最简单方法 是与设计相关的 tables ON DELETE CASCADE
选项。
基本上,当您设计一个具有外键(其他table上的主键)的数据库table时,您可以 为该外键设置 ON DELETE CASCADE
。这意味着当主table(这个外键是主键的table)上的记录被删除时所有相关记录其他 table 也被删除 。
因此,您无需考虑创建 "crazy" 查询来删除多个 table 上的相关数据。
您可以通过以下 link 了解有关 ON DELETE CASCADE
的更多信息:mysqltutorial。org/mysql-on-delete-cascade
例如,如果删除了一个客户,其他 table(S) 上的所有相关行都将被删除。如何做到这一点 mysql,我尝试了很多解决方案但没有一个成功。enter image description here
您必须先 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
实现此目的的最简单方法 是与设计相关的 tables ON DELETE CASCADE
选项。
基本上,当您设计一个具有外键(其他table上的主键)的数据库table时,您可以 为该外键设置 ON DELETE CASCADE
。这意味着当主table(这个外键是主键的table)上的记录被删除时所有相关记录其他 table 也被删除 。
因此,您无需考虑创建 "crazy" 查询来删除多个 table 上的相关数据。
您可以通过以下 link 了解有关 ON DELETE CASCADE
的更多信息:mysqltutorial。org/mysql-on-delete-cascade