MYSQL:一次删除所有表中的记录

时间:2012-09-12 10:41:06

标签: mysql

我有一个mysql数据库,在table f_idP_Key f_id tablef_key引用了f_id } table。我想删除所有deletetable(简称10)的记录。那么为此我需要f_id所有f_key = delete = 10作为table P_Key只有我delete来自主table 1}}将其包含为table。可以通过自动查看p_key来进行tables任何自动化过程,我不想写下{{1}}的整个列表(因为列表非常大)查询中有18个表格,因为许多{{1}}引用了此{{1}}。

2 个答案:

答案 0 :(得分:1)

最简单的方法是在密钥上设置ON DELETE CASCADE CONSTRAINT,这样在删除父表上的记录时,将删除引用该行的其他表中的所有子记录。请注意,您需要删除外键,如果它们没有ON DELETE CASCADE约束,则再次添加它们。像这样:

SHOW CREATE TABLE [table_name]

ALTER TABLE [table_name] DROP FOREIGN KEY [f_id];

ALTER TABLE [table_name]
ADD CONSTRAINT [f_id]
FOREIGN KEY (`[f_id]`) REFERENCES `[other_table]` (`[column_name]`)
ON DELETE CASCADE;

答案 1 :(得分:0)

您应该能够查看information_schema表以查找表的名称。类似的东西:

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = "database_name"

database_name替换为您要检查的数据库的名称,它应返回所有表名。您可以对该列表执行某些操作。