mysql - 按特定 ID 从所有表中删除

标签 mysql sql-delete

我已经搜索过了,但是很多问题都与截断表有关,但我不想清空表,我需要从所有表中删除,也许用一个查询而不是多个查询。

到目前为止,我的数据库中有 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/

相关文章:

MySQL 将多列选择为一列

mysql - .toList() 返回异常

mysql - 如果行存在于 MySQL 的另一个表中,则从一个表中删除行

mysql - 删除mysql查询

php - symfony2 上的序列化()

PHP - 创建依赖下拉列表

Mysql 5.5/phpmyadmin 简单查询之谜

php - MySql 删除操作比较日期时间与当前日期时间

mysql - 重新启动MySQL使应用程序更快

mysql - 每个用户保留 150 个最新条目