sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL - dynamiskt värde som tabellnamn

Du måste använda PL/PgSQL EXECUTE uttalande, via en DO block eller PL/PgSQL-funktion (CREATE OR REPLACE FUNCTION ... LANGUAGE plpgsql ). Dynamisk SQL stöds inte i den vanliga SQL-dialekten som används av PostgreSQL, endast i den procedurmässiga PL/PgSQL-varianten.

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

format(...) funktionens %I och %L format-specificerare gör korrekt identifierare respektive bokstavliga citat.

För bokstavliga ord rekommenderar jag att du använder EXECUTE ... USING snarare än format(...) med %L , men för identifierare som tabell-/kolumnnamn formatet %I mönster är ett trevligt kortfattat alternativ till verbose quote_ident samtal.




  1. Oracle - Materialized View fortfarande tillgänglig under fullständig uppdatering. Hur fungerar detta?

  2. Förstå effekterna av hög latens i High Availability MySQL- och MariaDB-lösningar

  3. django test app-fel - Fick ett fel när testdatabasen skapades:behörighet nekades att skapa databas

  4. HikariCP - anslutning är inte tillgänglig