我想刪除包含subscription
或subscription_id
列的數據庫表上的所有數據。我想刪除包含訂閱列的表中的所有數據
訂閱或subscription_id列是PK或FK。
我有7個表,其中包含subscription_id
列和78個表包含subscription
列。
是否有可能在SQL查詢中做到這一點?
我想刪除包含subscription
或subscription_id
列的數據庫表上的所有數據。我想刪除包含訂閱列的表中的所有數據
訂閱或subscription_id列是PK或FK。
我有7個表,其中包含subscription_id
列和78個表包含subscription
列。
是否有可能在SQL查詢中做到這一點?
這會給你對於具有subscription_id
或subscription
列的表的TRUNCATE
聲明:
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;
OP將需要禁用約束或重新排序根據上面的Jens註釋生成的語句。 – JimNicholson
@JimNicholson我編輯了我的帖子 – rbr94
你使用外鍵約束?你的DataBase引擎是什麼? * MySQL *,* MSSQL *等? – rbr94
是的,先生正在使用外鍵約束。 – John
根據環境的不同,您可以禁用約束並從所有這些表中刪除,然後重新啓用它們。否則,你必須從最底層開始工作,只有你可以寫出沒有錯誤的東西,因爲這需要洞察實際的DB結構。 – Jens