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

Можем ли да използваме DDL команди в подготвен израз (PostgreSQL)?

Опитахте ли?

Не се поддържа от сървъра, така че дори и да изглежда, че работи в JDBC драйвера от страна на клиента, не го препоръчвам:

regress=> PREPARE CREATE TABLE test ( id serial primary key );
ERROR:  syntax error at or near "CREATE"
LINE 1: PREPARE CREATE TABLE test ( id serial primary key );
                ^

Така или иначе няма предимство да го правите, тъй като не можете да параметризирате тях, така че не можете да напишете:

CREATE TABLE ? ( ? text, ...)

и след това задайте стойностите на контейнера като параметри на заявката към Statement .

В PostgreSQL само планиран изявленията могат да бъдат подготвени и параметризирани от страна на сървъра. В момента това означава INSERT , UPDATE , DELETE и SELECT .

Ще трябва да направите своя собствена интерполация на низове и безопасно цитиране според правила за лексикална структура - които са почти тези на спецификацията на SQL. Поставете всички идентификатори в "double quotes" и удвоете всички буквални двойни кавички, напр. "these are literal ""double quotes""" за името на таблицата these are literal "double quotes" .

Самият факт, че искате да направите това, предполага, че вероятно имате проблеми с дизайна във вашата схема и може да се наложи да преосмислите как се справяте с нещата. Може би публикувайте по-подробен въпрос на dba.stackexchange.com, който обяснява какво искате да постигнете с това и защо?



  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. Изпълнете заявки на PostgreSQL от командния ред

  3. Премахване на дублиращи се редове въз основа на поле в заявка за избор с PostgreSQL?

  4. Групиране на Postgres по заявка

  5. psql фаталната роля не съществува