我有一个mysql
数据库,在table
f_id
我P_Key
f_id
table
多f_key
引用了f_id
} table
。我想删除所有delete
中table
(简称10)的记录。那么为此我需要f_id
所有f_key
= delete
= 10作为table
P_Key
只有我delete
来自主table
1}}将其包含为table
。可以通过自动查看p_key
来进行tables
任何自动化过程,我不想写下{{1}}的整个列表(因为列表非常大)查询中有18个表格,因为许多{{1}}引用了此{{1}}。
答案 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
替换为您要检查的数据库的名称,它应返回所有表名。您可以对该列表执行某些操作。