sql >> Databasteknik >  >> RDS >> PostgreSQL

Kan vi använda DDL-kommandon i en förberedd sats (PostgreSQL)?

Provade du det?

Det stöds inte av servern, så även om det verkar fungera i JDBC-drivrutinen på klientsidan rekommenderar jag det inte:

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 );
                ^

Det finns ingen fördel med att göra det ändå eftersom du inte kan parameterisera dem, så du kan inte skriva:

CREATE TABLE ? ( ? text, ...)

och ange sedan platshållarvärdena som frågeparametrar till Statement .

Endast planerad i PostgreSQL satser kan förberedas och parametriseras på serversidan. För närvarande betyder det INSERT , UPDATE , DELETE och SELECT .

Du måste göra din egen stränginterpolation och säker citering enligt PostgreSQL:s lexikal strukturregler - som i stort sett är de av SQL-specifikationen. Slå in alla identifierare i "double quotes" och dubbla alla bokstavliga citattecken, t.ex. "these are literal ""double quotes""" för tabellnamnet these are literal "double quotes" .

Just det faktum att du vill göra detta tyder på att du förmodligen har designproblem i ditt schema och kanske behöver tänka om hur du går tillväga. Kanske posta en mer detaljerad fråga på dba.stackexchange.com som förklarar vad du vill uppnå med detta och varför?



  1. Villkorlig SQL ORDER BY ASC/DESC för alfakolumner

  2. Hur man MySQL arbetar skiftlägesokänslig och accentokänslig i UTF-8

  3. Tio tips om hur du uppnår MySQL- och MariaDB-säkerhet

  4. Google BigQuery ODBC-drivrutin