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

Khi nào Postgres kiểm tra các ràng buộc duy nhất?

Postgres quyết định kiểm tra các ràng buộc thuộc loại IMMEDIATELY vào thời điểm khác với thời điểm được đề xuất trong tiêu chuẩn SQL.

Cụ thể, tài liệu cho SET CONSTRAINTS trạng thái (nhấn mạnh của tôi):

Postgres chọn thực hiện truy vấn này bằng cách sử dụng một kế hoạch dẫn đến xung đột tạm thời cho sort_order NGAY LẬP TỨC không thành công. Lưu ý rằng điều đó có nghĩa là đối với cùng một lược đồ và cùng một dữ liệu, cùng một truy vấn có thể hoạt động hoặc không thành công tùy thuộc vào kế hoạch thực thi.

Bạn sẽ phải thực hiện ràng buộc DEFERRABLE hoặc DEFERRABLE INITIALLY DEFERRED , điều này sẽ trì hoãn việc xác minh ràng buộc cho đến khi kết thúc giao dịch hoặc đến thời điểm mà một câu lệnh SET CONSTRAINTS ... IMMEDIATE được thực thi.

Phụ lục từ bình luận của @ HansGinzel:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách quản lý cơ sở dữ liệu PostgreSQL của bạn từ CLI ClusterControl

  2. ImportError khi chạy cgi-bin trên localhost - ký hiệu không xác định:lo_truncate64

  3. Sao chép bảng từ cơ sở dữ liệu này sang cơ sở dữ liệu khác trong Postgres

  4. Liệt kê các bảng trong một lược đồ PostgreSQL

  5. SQL ORDER BY với CASE với UNION ALL