我想删除包含subscription
或subscription_id
列的数据库表格中的所有数据。
订阅或 subscription_id 列是PK或FK。
我有7个包含subscription_id
列的表和包含subscription
列的78个表。
是否可以在sql查询中执行此操作?
答案 0 :(得分:2)
这将为您提供TRUNCATE
或subscription_id
列表格的subscription
语句:
SELECT DISTINCT concat( "TRUNCATE TABLE ", TABLE_NAME, ";" )
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME IN ('subscription_id','subscription')
AND TABLE_SCHEMA='YourDatabase';
编辑1:
正如评论中所提到的,需要禁用约束,以便能够使用上面给出的查询以随机顺序截断表。
禁用约束的示例:
SET foreign_key_checks = 0;
--Truncate statements execution
SET foreign_key_checks = 1;