Tôi đọc điều này về từ khóa SQL DEFERRABLE
trong Hệ thống cơ sở dữ liệu - Toàn tập .
Sau đó [KHÔNG DEFERRABLE] là mặc định, và các phương tiện mà mỗi lần một tuyên bố sửa đổi cơ sở dữ liệu được thực thi, các hạn chế được kiểm tra ngay lập tức sau đó, nếu việc sửa đổi có thể vi phạm các hạn chế foreign-key.
Tuy nhiên, nếu chúng ta khai báo một ràng buộc là DEFERRABLE , thì chúng ta có tùy chọn để nó đợi cho đến khi một giao dịch hoàn tất trước khi kiểm tra ràng buộc.
Chúng tôi làm theo từ khóa DEFERRABLE bởi một trong hai ban đầu HOÃN hoặc ban đầu NGAY . Trong trường hợp trước đây, việc kiểm tra sẽ được hoãn lại ngay trước khi thực hiện mỗi giao dịch. Trong trường hợp thứ hai, việc kiểm tra sẽ được thực hiện ngay sau mỗi tuyên bố.
Khác như thế nào NOT DEFERRABLE
với DEFERRABLE INITIALLY IMMEDIATE
? Trong cả hai trường hợp, dường như mọi ràng buộc đều được kiểm tra sau mỗi câu lệnh riêng lẻ.
DEFERRABLE
nêu ý định của nhà thiết kế rằng việc trì hoãn ràng buộc là một hành động đáng giá hoặc cần thiết. Đây không phải là trường hợp của phần lớn các ràng buộc cơ sở dữ liệu và việc dán nhãn tất cả vìDEFERRABLE
sẽ làm mất đi sự khác biệt hữu ích này.