是否可以一次请求清除所有表?我试过以下没有结果。
DELETE a,b,c,d,e,f,g,h,i,j,k,l,m,n,o
FROM jos_bet_details as a, jos_bet_1x2 as b, jos_bet_1x2_best as c, jos_bet_1x2_prev as d,
jos_bet_1x3 as e, jos_bet_1x3_best as f, jos_bet_1x3_prev g, jos_bet_hcp as h,
jos_bet_hcp_best i, jos_bet_hcp_prev j, jos_bet_ou k,jos_bet_ou_best l,
jos_bet_ou_prev m, jos_bet_debug n, jos_bet_deleted o
这是您的解决方案
这背后的原理是:您想使用information_schema.tables为您动态构建 DELETE 查询。
首先在名为“mass_delete_table_command”的变量中收集表的名称作为删除列表和表列表。然后,将其作为准备好的语句执行。
以下是创建 4 个表、添加记录并切换记录的示例代码:
我在我的 PC 上的 MySQL 5.5.12 中运行了它。这是输出:
这肯定会为你工作,只要
试试看 !!!
你的
delete
语法对我来说看起来不错:请注意,外键约束可能会导致此操作失败。如果您有循环外键(即从表 A 到表 B 以及从表 B 到表 A),那么您可能需要在删除之前进行级联删除或删除(或禁用)约束。
您必须构建一个动态 sql 语句,该语句将从所有表中逐一删除数据。您将在此问题中找到有关截断数据库中所有表中数据的适当示例。那里的问题是关于使用 Transact-Sql 截断 MS SQL 2000 数据库中的所有表。此外,我们还讨论了截断表(未记录的操作,有一些限制),而不仅仅是删除,所以如果您需要删除,您必须将操作从截断更改为删除。
这里的问题与查看表之间的父/子关系时语句的优先顺序有关,因为您不能在其子表之前清空父表,因此您必须检查删除的顺序陈述。
我会做类似的事情:
这是使用系统视图 information_schema.tables 的动态 sql 的 T-SQL 示例,它也存在于 My-SQL 中。您必须翻译变量声明和其他小语言问题。
编辑 1 - 删除原因:我不知道 MySQL 的多表 DELETE 语句。我的错!
编辑 2 - 取消删除的原因:我看到接受的答案正在使用这种技术,所以看起来这个答案是有效的。多表删除语句发生了什么?
我已经重新使用了 RonaldoMYSQL 数据库答案来完全删除一个表,将其发布在这里,以便任何人都可以使用它来方便他/她,
在我的查询中提取了一个逗号,所以我用全部替换修改了该语句,然后手动执行它。