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

Oracleのスキーマからテーブルのリストを削除するにはどうすればよいですか?

    データディクショナリを駆り立てる動的SQLを使用します。

    begin
         for trec in ( select table_name
                       from user_tables
                       where table_name like 'PREFIX\_%' escape `\' )
         loop
             dbms_output.put_line('dropping table ' || trec.table_name);
             execute immediate 'drop table '||trec.table_name;
         end loop;
    end;
    

    LIKE句を正確に指定することをお勧めします。 escapeを使用する アンダースコアがワイルドカードとして扱われないようにするためのキーワード。または、substr(table_name, 1, 7) = 'PREFIX_'を使用します 。

    10g以降およびごみ箱が有効になっています 、しかし、そうしない方が良いです。明らかに、本番環境ではこのようなコードを実行しませんが、原則を使用してドロップステートメントのスクリプトを生成します。

    上記のコードは依存関係を処理しません。プレフィックス付きのテーブルを参照する外部キーがあり、テーブルの削除を強制する場合は、次の追加ロジックを使用します。

         execute immediate 'drop table '|| trec.table_name ||' cascade constraint';
    

    これにより、外部キー制約は削除されますが、(以前の)依存テーブルは残ります。



    1. MySQLInnoDBは結合された行をロックします

    2. Microsoftによるデータベースの命名規則?

    3. GlassFish5とMySQLコネクタ

    4. 適切なNuGetパッケージがあるにもかかわらず、MySQLコネクタをコンピューターにインストールする必要があるのはなぜですか?