2016-12-08 24 views
0

我想刪除包含subscriptionsubscription_id列的數據庫表上的所有數據。我想刪除包含訂閱列的表中的所有數據

訂閱subscription_id列是PK或FK。

我有7個表,其中包含subscription_id列和78個表包含subscription列。

是否有可能在SQL查詢中做到這一點?

+0

你使用外鍵約束?你的DataBase引擎是什麼? * MySQL *,* MSSQL *等? – rbr94

+0

是的,先生正在使用外鍵約束。 – John

+0

根據環境的不同,您可以禁用約束並從所有這些表中刪除,然後重新啓用它們。否則,你必須從最底層開始工作,只有你可以寫出沒有錯誤的東西,因爲這需要洞察實際的DB結構。 – Jens

回答

2

這會給你對於具有subscription_idsubscription列的表的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; 
+0

OP將需要禁用約束或重新排序根據上面的Jens註釋生成的語句。 – JimNicholson

+0

@JimNicholson我編輯了我的帖子 – rbr94

相關問題