我已经搜索过了,但是很多问题都与截断表有关,但我不想清空表,我需要从所有表中删除,也许用一个查询而不是多个查询。
到目前为止,我的数据库中有 34 个表,我需要在请求时删除具有特定 ID 的所有行。例如:
DELETE FROM table1, table2 ... table33, table34
WHERE customer_id = 4
如何继续执行可以执行此操作的查询?另一种想法是,所有表中可能没有与 customer_id
相同的行,因此即使没有 ID 为 4
的记录,它也应该删除。
最佳答案
您找不到它的原因是您实际上并不需要它。我认为没有办法做到这一点,因为如果你正确使用 foreign key constraints 通常你不需要这样做。 。维护这一点的正确方法是设置外键约束,以便它们从具有您的客户 id(例如 customer_purchase)的表指向以 custom_id 为主键的表;然后当您从 customer_id 为主键的表中删除客户时;涉及该客户的所有其他表也将被删除。
根据我刚才提到的内容进行构建;很多人选择进行“软”删除。在这里,您只需在客户表上设置一个标志,然后在删除它时将其设置为“1”即可。您可能想要这样做的原因是出于审核能力的原因。举例来说,您需要保留所有购买的记录;即使客户被删除。在这个情况下;您应该进行软删除,这样当您的客户被删除时,您就不会丢失购买历史记录中的项目。
关于mysql - 按特定 ID 从所有表中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8719149/