2012-07-10 22 views

Trả lời

10

DEFERRABLE
KHÔNG DEFERRABLE
này điều khiển cho dù các hạn chế có thể được hoãn lại. Một ràng buộc mà không phải là trì hoãn sẽ được kiểm tra ngay lập tức sau mỗi lệnh. Việc kiểm tra các ràng buộc có thể trì hoãn có thể bị trì hoãn cho đến khi kết thúc giao dịch (sử dụng lệnh SET CONSTRAINTS). NOT DEFERRABLE là mặc định. Chỉ có các ràng buộc khóa ngoài hiện đang chấp nhận điều khoản này. Tất cả các loại ràng buộc khác không bị trì hoãn.

[Nguồn] http://www.postgresql.org/docs/8.1/static/sql-createtable.html

Nói tóm lại, giả sử hai bảng có phụ thuộc FK cyclic. Khi chúng ta thực hiện chèn dữ liệu mà dữ liệu tham chiếu không có trong cả hai bảng và ràng buộc FK không được trì hoãn, DB sẽ ném lỗi vì có sự vi phạm ràng buộc FK. Nếu hoãn lại, việc xác thực sẽ được thực hiện tại thời điểm thực hiện giao dịch.

+0

Đó là những gì tôi nghĩ. Cảm ơn bạn đã xóa nó. – Gregg