PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak usunąć tabelę na podstawie warunku JEŻELI w postgresie?

IF nie może być używany w SQL, dotyczy to tylko PL/pgSQL.

Musisz to zrobić za pomocą dynamicznego SQL wewnątrz anonimowego bloku PL/pgSQL. Coś takiego:

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;
$$

Prawdopodobnie powinieneś rozszerzyć select oświadczenie, aby dołączyć do pg_namespace i dołącz nazwę schematu do warunku where, aby upewnić się, że przypadkowo nie upuszczasz tabeli z niewłaściwego schematu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. W Railsach, jak mogę zapytać db o zagregowaną liczbę i pogrupować według tygodnia?

  2. Zresetuj licznik automatycznego przyrostu w postgresie

  3. Używanie tabeli tymczasowej do zastąpienia klauzuli WHERE IN

  4. SQL:Zalety ENUM w porównaniu z relacją jeden-do-wielu?

  5. Rozwiązanie przyspieszające powolne zapytanie SELECT DISTINCT w Postgres