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

Kan vi bruge DDL-kommandoer i en forberedt erklæring (PostgreSQL)?

Har du prøvet det?

Det understøttes ikke af serveren, så selvom det ser ud til at virke i JDBC-driveren på klientsiden, anbefaler jeg det ikke:

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

Der er alligevel ingen fordel ved at gøre det, da du ikke kan parametrere dem, så du kan ikke skrive:

CREATE TABLE ? ( ? text, ...)

og angiv derefter pladsholderværdierne som forespørgselsparametre til Statement .

I PostgreSQL kun planlagt Udsagn kan forberedes og parametreres på serversiden. I øjeblikket betyder det INSERT , UPDATE , DELETE og SELECT .

Du skal lave din egen strenginterpolation og sikre citering i henhold til PostgreSQL's leksikalske strukturregler - som stort set er dem i SQL-specifikationen. Pak alle identifikatorer ind i "double quotes" og fordoble alle bogstavelige dobbelte anførselstegn, f.eks. "these are literal ""double quotes""" for tabelnavnet these are literal "double quotes" .

Selve det faktum, at du ønsker at gøre dette, tyder på, at du sandsynligvis har designproblemer i dit skema og måske skal genoverveje, hvordan du griber tingene an. Måske post et mere detaljeret spørgsmål på dba.stackexchange.com, der forklarer, hvad du vil opnå med dette og hvorfor?



  1. Gruppere efter X eller Y?

  2. Hvordan får man JSON-data fra php og skærm til tekstvisning i Android?

  3. Sådan sender du flere kolonner til en variabel i php

  4. Flask, ikke alle argumenter konverteret under strengformatering