sql >> Database >  >> RDS >> PostgreSQL

Kunnen we DDL-opdrachten gebruiken in een voorbereide verklaring (PostgreSQL)?

Heb je het geprobeerd?

Het wordt niet ondersteund door de server, dus zelfs als het lijkt te werken in het JDBC-stuurprogramma aan de clientzijde, raad ik het niet aan:

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

Het heeft sowieso geen voordelen om dit te doen, aangezien u niet kunt parameteriseren ze, dus je kunt niet schrijven:

CREATE TABLE ? ( ? text, ...)

en specificeer vervolgens de tijdelijke aanduiding-waarden als queryparameters voor de Statement .

Alleen in PostgreSQL gepland verklaringen kunnen server-side worden voorbereid en geparametriseerd. Momenteel betekent dat INSERT , UPDATE , DELETE en SELECT .

Je moet je eigen string-interpolatie doen en veilig citeren volgens PostgreSQL's lexicale structuurregels - die vrijwel die van de SQL-specificatie zijn. Zet alle identifiers tussen "double quotes" en verdubbel alle letterlijke dubbele aanhalingstekens, bijv. "these are literal ""double quotes""" voor de tabelnaam these are literal "double quotes" .

Alleen al het feit dat je dit wilt doen, suggereert dat je waarschijnlijk ontwerpproblemen hebt in je schema en dat je misschien opnieuw moet nadenken over hoe je de dingen aanpakt. Misschien een meer gedetailleerde vraag posten op dba.stackexchange.com waarin wordt uitgelegd wat je hiermee wilt bereiken en waarom?



  1. JPA:MySQL zegt dat de tabel niet bestaat, maar hij bestaat echt

  2. Hoe postgresql op ubuntu grondig te zuiveren en opnieuw te installeren?

  3. een array maken uit de database

  4. Die verdomd grote objecten