sql >> データベース >  >> RDS >> Sqlserver

名前が特定の文字列で始まるすべてのテーブルを削除します

    データベースに複数の所有者がいる場合は、所有者を含めるようにクエリを変更する必要がある場合があります。

    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
    

    これは、スクリプトの生成と実行の2段階のアプローチを使用するよりもクリーンです。ただし、スクリプト生成の利点の1つは、実際に実行される前に、実行される内容全体を確認できることです。

    本番データベースに対してこれを行う場合は、可能な限り注意する必要があることを私は知っています。

    編集 コードサンプルが修正されました。



    1. Oracleインデックスを選択して最適化する方法は?

    2. SQL Serverは、MySQLのON DUPLICATEKEYUPDATEのようなものを提供しますか

    3. データベースのスケーリングのベストプラクティス:パート1

    4. MS-Accessレコードセットおよびクラスモジュール