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

postgresでIF条件に基づいてテーブルを削除するにはどうすればよいですか?

    IF SQLでは使用できません。これはPL/pgSQLでのみ有効です。

    これは、匿名PL/pgSQLブロック内の動的SQLで行う必要があります。次のようなもの:

    do
    $$
    declare
      l_count integer;
    begin
      select count(*)
         into l_count
      from pg_class c
        join pg_namespace nsp on c.relnamespace = nsp.oid
      where c.relname = 'mytable' 
        and c.relpersistence = 'u'
        and nsp.nspname = 'public';
    
      if l_count = 1 then 
        execute 'drop table mytable';
      end if;
    
    end;
    $$
    

    おそらくselectを拡張する必要があります pg_namespaceに対して結合するステートメント 間違ったスキーマから誤ってテーブルを削除しないように、where条件にスキーマ名を含めます。



    1. PL/SQLでの表変換/フィールド解析

    2. OSXでのMySQLrootユーザーパスワードの設定

    3. MySQL-DECIMAL(2、2)の1の値は0.99として出力されます

    4. 新たに挿入された行のIDをibatisで取得する際の同時実行性の問題