1. ホーム
  2. sql

[解決済み] 特定の文字列で始まる名前のテーブルをすべて削除する

2022-04-23 05:07:12

質問

指定された文字列で始まる名前のテーブルをすべて削除するにはどうすればよいですか?

これは、動的SQLと INFORMATION_SCHEMA テーブルを使用します。

解決方法は?

データベースに複数の所有者がいる場合、所有者を含めるためにクエリーを修正する必要があるかもしれません。

DECLARE @cmd varchar(4000)
DECLARE cmds CURSOR FOR
SELECT 'drop table [' + Table_Name + ']'
FROM INFORMATION_SCHEMA.TABLES
WHERE Table_Name LIKE 'prefix%'

OPEN cmds
WHILE 1 = 1
BEGIN
    FETCH cmds INTO @cmd
    IF @@fetch_status != 0 BREAK
    EXEC(@cmd)
END
CLOSE cmds;
DEALLOCATE cmds

この方法は、generate scriptとrunの2つのステップを使用するよりもすっきりしています。 しかし、スクリプト生成の利点は、実際に実行される前に、実行される内容全体を確認することができることです。

もし自分が本番のデータベースに対してこのようなことをするのであれば、できる限り気をつけたいとは思っています。

編集 コードサンプルを修正しました。