SQL Serverで相互に関係するテーブルのグループを削除する簡単な方法はありますか?理想的には、グループ全体がプロセスの終わりまでに終了することを知っているので、彼らがどの順序でドロップされているか心配する必要はありません。SQL Serverでテーブルのグループを削除する
答えて
愚かな音が出る危険がありますが、SQL Serverが削除/カスケード構文をサポートしているとは思われません。私はカスケード削除(http://msdn.microsoft.com/en-us/library/ms152507.aspx)を行う削除ルールを設定することができると思うが、私が知っている限り、SQL Serverのトリックはドロップする各テーブルに対して一度だけドロップクエリを実行することです。これは、あなたがDatabase Journalで見つけることができますsp___drop___constraintsスクリプトが必要です
私はこれをテストするために、SQL Serverへのアクセスを持っていますが、方法についてはありません:
DROP TABLE IF EXISTS table1, table2, table3 CASCADE;
デレクのアプローチが動作するかどうか、私は、よく分かりません。あなたはまだそれを最良の答えとしてマークしていません。
もしそうでなければ:SQL Server 2005ではそれは可能でしょう。
彼らは例外(私はまだ使用していない)を導入しました。だから、テーブルをドロップし、例外が発生した場合はそれをキャッチし、次のテーブルがすべて消えるまで試してみてください。
テンポラリテーブルにテーブルのリストを格納しておきたい場合は、テンポラリテーブルをトラバースするためにカーソルを使用できます。
SQL Server内でのみ機能するソリューションはかなりシンプルになりますが、私はApacheのddlutilsを使用して終了しました。
@Derek Park、私はそこにコンマを置くことができないことを知っていたので、それは便利ですが、期待通りには動作しません。ダミーのIF EXISTSもCASCADEもSQL Serverに認識されているようですが、drop table X, Y, Z
は、指定された順序で削除する必要がある場合にのみ動作します。
また、ドロップテーブルの構文について説明しているhttp://msdn.microsoft.com/en-us/library/ms173790.aspxも参照してください。
テーブルを任意の順序で削除しないようにするのは、テーブル間の外部キーの依存関係です。だから始める前にFKを取り除く。 INFORMATION_SCHEMAシステムビューを使用する
- 、すべての外部キーのリストを取得し、これらの表のいずれかに関連
- ドロップは、これらの外部キー
- のそれぞれ今、あなたが使用して、テーブルのすべてをドロップすることができるはずですあなたが望む任意の順序。
異なるアプローチがあります。最初に制約を取り除き、次に単一のショットでテーブルを削除します。
つまり、すべての制約に対してDROP CONSTRAINTを、次に各テーブルにDROP TABLEを指定します。この時点で実行の順序は問題ではありません。
: - 明らかに - この
sp_MSforeachtable @command1="print 'disabling constraints: ?'", @command2="sp_drop_constraints @tablename=?"
GO
sp_MSforeachtable @command1="print 'dropping: ?'", @command2="DROP TABLE ?"
GO
NOTEをあなたはとても気をつけて、データベース内のすべての表をドロップすることを意図している場合
- 1. SQL Server 2008のテーブルの階層削除
- 2. SQL SERVERのテーブルのグループ化
- 3. トリガーを作成する方法[テーブル] MS SQL Serverで削除
- 4. SQL Serverでグローバルテンポラリテーブル(## tempTable)を削除する
- 5. SQL Serverテーブルからデータをバッチ削除する
- 6. SQL Serverの外部キーと参照テーブルを削除します
- 7. SQL Serverの削除のジレンマ
- 8. SQL Server Management Studioでテーブルを削除しました。
- 9. SQL Serverテーブルの除外
- 10. の削除SQL ServerデータベースC#
- 11. SQL Serverインスタンスの削除
- 12. SQL Serverテーブルの外部キーを使用したデータの削除
- 13. 2つのテーブルを含むSQL Serverの削除クエリ
- 14. Sql Server 2008 - シノニムを削除する
- 15. インデックスを削除するSQL Server 2000
- 16. SQL Serverデータベースを削除する
- 17. SQL Server 2008マージソフト削除エラー
- 18. SQL Serverでグループ化するグループ
- 19. 関連テーブルのSQL削除
- 20. グループSQL Serverの
- 21. テーブル全体を削除するSQLステートメント
- 22. SQLテーブルからデータを削除する
- 23. 重複するデータを削除し、SQL Serverの別のテーブルにロードします
- 24. SQL Server 2005のテーブルからすべての行を削除する方法
- 25. 複数のテーブルから1つのレコードを削除するSQL Serverのトリガー
- 26. システムテーブルまたはSQL Serverリンクサーバーの他のテーブルを削除する方法
- 27. SQL Server 2005で手動カスケード削除
- 28. With文の後にSQL Server上の一時テーブルを削除できません
- 29. SQL ServerのテーブルのグループからDataSpaceを知るには?
- 30. SQL Server 2005のバックアップファイルの削除