2016-12-08 7 views
0

subscriptionまたはsubscription_id列を含むデータベーステーブルのすべてのデータを削除します。サブスクリプション列を含むテーブル内のすべてのデータを削除します

サブスクリプションまたはsubscription_idカラムはPKまたはFKです。

subscription_idの列と、subscriptionの列を含む78の表を含む7つの表があります。

SQLクエリでこれを行うことはできますか?

SELECT DISTINCT concat("TRUNCATE TABLE ", TABLE_NAME, ";") 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE COLUMN_NAME IN ('subscription_id','subscription') 
     AND TABLE_SCHEMA='YourDatabase'; 

EDIT 1:コメントで述べたように

に無効にする必要がある

+0

あなたは外部キー制約を使用していますか?そして、あなたのデータベースエンジンは何ですか? * MySQL *、* MSSQL *など? – rbr94

+0

はい、SirはForeign Key制約を使用していました。 – John

+0

環境によっては、制約を無効にしてそれらのすべてのテーブルから削除し、再度有効にすることができます。それ以外の場合は、最下位レベルから作業する必要があります。これは、実際のDB構造の洞察を必要とするため、フォールトなしでのみ書き込むことができるものです。 – Jens

答えて

2

これは、あなたsubscription_idsubscription列を持つテーブルに対するTRUNCATE文を与えます上記のクエリを使用してテーブルをランダムな順序で切り捨てることができるようにするには、制約が必要です。制約を無効に

サンプル:

SET foreign_key_checks = 0; 

--Truncate statements execution 

SET foreign_key_checks = 1; 
+0

OPは制約を無効にするか、上記のJensのコメントに従って生成されたステートメントを並べ替える必要があります。 – JimNicholson

+0

@JimNicholson私の投稿を編集しました – rbr94

関連する問題