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

TẠO CƠ SỞ DỮ LIỆU bên trong giao dịch

Khi bạn thử nó, bạn gặp lỗi:

ERROR:  CREATE DATABASE cannot run inside a transaction block

Điều này đến từ src/backend/access/transam/xact.c (dòng 3023 trên các nguồn của tôi, nhưng thay đổi theo phiên bản), trong PreventTransactionChain(...) .

Nhận xét ở đó giải thích rằng:

Đối với CREATE DATABASE nó được gọi từ src/backend/tcop/utility.c trong standard_ProcessUtility trong trường hợp cho T_CreatedbStmt , nhưng rất tiếc là không có bất kỳ nhận xét cung cấp thông tin nào cho biết cụ thể tại sao CREATE DATABASE không an toàn để chạy trong một giao dịch.

Nhìn vào các nguồn, tôi có thể thấy rằng đối với một điều, nó buộc một trạm kiểm soát.

Mặc dù vậy, nhìn chung, tôi không thấy bất cứ điều gì thực sự hét lên rằng "chúng tôi không thể thực hiện giao dịch này". Đó là "chúng tôi chưa triển khai chức năng để thực hiện giao dịch này".



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểm tra chức năng HASH để phân vùng bảng Postgres

  2. Gặp lỗi:Bạn phải cài đặt ít nhất một gói postgresql-client- <version> khi triển khai cho heroku

  3. Làm cách nào để trả về một giá trị thuần túy từ truy vấn Knex / Postgresql?

  4. Tại sao kiểu dữ liệu char được chuyển đổi tự động thành bpchar?

  5. Làm thế nào để biết phân vùng nào sẽ được sử dụng trong phân vùng băm Postgres?