PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL - динамична стойност като име на таблица

Ще трябва да използвате PL/PgSQL EXECUTE изявление чрез DO блокова или PL/PgSQL функция (CREATE OR REPLACE FUNCTION ... LANGUAGE plpgsql ). Динамичният SQL не се поддържа в обикновения SQL диалект, използван от PostgreSQL, а само в процедурния вариант 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 на функцията и %L спецификаторите на формат правят правилен идентификатор и съответно буквално цитиране.

За литералите препоръчвам да използвате EXECUTE ... USING вместо format(...) с %L , но за идентификатори като имена на таблица/колона форматът %I шаблонът е хубава кратка алтернатива на многословния quote_ident обаждания.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите списък с имена на колони и типове данни на таблица в PostgreSQL?

  2. Как да интерпретирате стойността на PosgreSQL txid_current().

  3. Импортиране на PostgreSQL CSV от командния ред

  4. чертата `diesel::Expression` не е внедрена за `bigdecimal::BigDecimal`

  5. Производителност на TPC-H след PostgreSQL 8.3