sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL - dynamische waarde als tabelnaam

U moet de PL/PgSQL EXECUTE . gebruiken statement, via een DO blok- of PL/PgSQL-functie (CREATE OR REPLACE FUNCTION ... LANGUAGE plpgsql ). Dynamische SQL wordt niet ondersteund in het gewone SQL-dialect dat door PostgreSQL wordt gebruikt, alleen in de procedurele PL/PgSQL-variant.

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

Het format(...) functie's %I en %L format-specifiers doen respectievelijk de juiste identifier en letterlijke citaten.

Voor letterlijke termen raad ik aan om EXECUTE ... USING te gebruiken in plaats van format(...) met %L , maar voor identifiers zoals tabel-/kolomnamen het formaat %I patroon is een mooi beknopt alternatief voor uitgebreide quote_ident oproepen.




  1. Inloggen bij Microsoft SQL Server Fout:18456

  2. De kunst van het aggregeren van gegevens in SQL van eenvoudige tot glijdende aggregaties

  3. Postgresql-query tussen datumbereiken

  4. Maak een tabel met compressie in SQL Server (T-SQL)