PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Chúng ta có thể sử dụng Lệnh DDL trong một câu lệnh đã chuẩn bị (PostgreSQL) không?

Bạn đã thử chưa?

Nó không được máy chủ hỗ trợ, vì vậy ngay cả khi nó có vẻ hoạt động trong trình điều khiển JDBC phía máy khách, tôi không khuyên bạn nên sử dụng nó:

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

Dù sao thì cũng không có lợi gì khi làm như vậy vì bạn không thể tham số hóa chúng, vì vậy bạn không thể viết:

CREATE TABLE ? ( ? text, ...)

và sau đó chỉ định các giá trị trình giữ chỗ làm tham số truy vấn cho Statement .

Trong PostgreSQL chỉ có kế hoạch các câu lệnh có thể được chuẩn bị và được tham số hóa phía máy chủ. Hiện tại, điều đó có nghĩa là INSERT , UPDATE , DELETESELECT .

Bạn sẽ cần thực hiện nội suy chuỗi của riêng mình và trích dẫn an toàn theo quy tắc cấu trúc từ vựng - tương đối giống với thông số SQL. Gói tất cả các số nhận dạng trong "double quotes" và nhân đôi bất kỳ dấu ngoặc kép theo nghĩa đen nào, ví dụ:"these are literal ""double quotes""" đối với tên bảng these are literal "double quotes" .

Thực tế là bạn muốn làm điều này cho thấy rằng bạn có thể có vấn đề thiết kế trong lược đồ của mình và có thể cần phải suy nghĩ lại cách bạn đang thực hiện mọi thứ. Có thể đăng một câu hỏi chi tiết hơn trên dba.stackexchange.com giải thích những gì bạn muốn đạt được với điều này và tại sao?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi giá trị khi nhập dữ liệu vào bảng postgres bằng psycopg2

  2. PSQLException không bị bắt

  3. Postgres trên dòng lệnh với trình chỉnh sửa bên ngoài không chạy truy vấn

  4. MySQL và PostgreSQL cho các ứng dụng web

  5. Loại bỏ các thành phố trùng lặp khỏi cơ sở dữ liệu