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?