PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Possiamo usare i comandi DDL in un'istruzione preparata (PostgreSQL)?

Ci hai provato?

Non è supportato dal server, quindi anche se sembra funzionare nel driver JDBC lato client non lo consiglio:

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

Non c'è alcun vantaggio nel farlo in ogni caso poiché non puoi parametrizzare loro, quindi non puoi scrivere:

CREATE TABLE ? ( ? text, ...)

e quindi specificare i valori segnaposto come parametri di query per l'Statement .

Solo in PostgreSQL pianificato le istruzioni possono essere preparate e parametrizzate lato server. Attualmente ciò significa INSERT , UPDATE , DELETE e SELECT .

Dovrai eseguire la tua interpolazione di stringhe e citazioni sicure secondo regole della struttura lessicale - che sono praticamente quelli delle specifiche SQL. Racchiudi tutti gli identificatori tra "double quotes" e raddoppia le virgolette letterali, ad es. "these are literal ""double quotes""" per il nome della tabella these are literal "double quotes" .

Il fatto stesso che tu voglia farlo suggerisce che probabilmente hai problemi di progettazione nel tuo schema e potrebbe essere necessario ripensare a come stai andando le cose. Forse posta una domanda più dettagliata su dba.stackexchange.com che spieghi cosa vuoi ottenere con questo e perché?