sql >> Databáze >  >> RDS >> PostgreSQL

PostgreSQL - dynamická hodnota jako název tabulky

Budete muset použít PL/PgSQL EXECUTE příkazem DO blok nebo funkce PL/PgSQL (CREATE OR REPLACE FUNCTION ... LANGUAGE plpgsql ). Dynamické SQL není podporováno v běžném SQL dialektu používaném PostgreSQL, pouze v procedurální variantě 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 funkce a %L specifikátory formátu dělají správný identifikátor a doslovné citace.

Pro literály doporučuji použít EXECUTE ... USING spíše než format(...) s %L , ale pro identifikátory, jako jsou názvy tabulek/sloupců, formát %I vzor je pěkná stručná alternativa k podrobnému quote_ident hovory.




  1. Závažná chyba PHP:Volání nedefinované funkce mssql_connect()

  2. Jak změnit řádek příkazového řádku v SQLite

  3. Jak vrátit pouze datum z datového typu SQL Server DateTime

  4. Oracle Indexy a typy indexů v oracle s příkladem