sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL - dynamisk værdi som tabelnavn

Du skal bruge PL/PgSQL EXECUTE sætning via en DO blok eller PL/PgSQL-funktion (CREATE OR REPLACE FUNCTION ... LANGUAGE plpgsql ). Dynamisk SQL understøttes ikke i den almindelige SQL-dialekt, der bruges af PostgreSQL, kun i den proceduremæssige 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;

format(...) funktionens %I og %L format-specificatorer udfører korrekt identifikator og bogstavelige citater, henholdsvis.

For bogstaver anbefaler jeg at bruge EXECUTE ... USING i stedet for format(...) med %L , men for identifikatorer som tabel-/kolonnenavne formatet %I mønster er et godt kortfattet alternativ til verbose quote_ident opkald.




  1. Find antallet af kolonner i en tabel

  2. Forespørgselsfejl med tvetydigt kolonnenavn i SQL

  3. Sådan afkortes tekst med en Ellipsis i MariaDB

  4. Hvordan fortolker du en forespørgsels forklaringsplan?