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

PostgreSQL - dynamiczna wartość jako nazwa tabeli

Będziesz musiał użyć PL/PgSQL EXECUTE oświadczenie, poprzez DO blok lub funkcja PL/PgSQL (CREATE OR REPLACE FUNCTION ... LANGUAGE plpgsql ). Dynamiczny SQL nie jest obsługiwany w zwykłym dialekcie SQL używanym przez PostgreSQL, tylko w proceduralnym wariancie PL/PgSQL.

DO
$$
BEGIN
EXECUTE format('CREATE TABLE %I AS SELECT * FROM backup', 'backup_' || to_char(CURRENT_DATE,'yyyy-mm-dd'));
END;
$$ LANGUAGE plpgsql;

format(...) %I funkcji i %L specyfikatory-formatu dokonują odpowiednio właściwego identyfikatora i cytowania literału.

Dla literałów polecam użyć EXECUTE ... USING zamiast format(...) z %L , ale dla identyfikatorów, takich jak nazwy tabel/kolumn, format %I wzorzec to fajna, zwięzła alternatywa dla gadatliwego quote_ident połączeń.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Eksportuj i importuj zrzut tabeli (.sql) za pomocą pgAdmin

  2. Odpowiednik unpivot() w PostgreSQL

  3. PSQLException:Zestaw wyników nie jest prawidłowo ustawiony, być może trzeba wywołać następny

  4. DatabaseError:bieżąca transakcja została przerwana, polecenia zignorowane do końca bloku transakcji?

  5. Ograniczenie nakładania się dat Postgres