Trong khi CHECK
ràng buộc đánh giá một biểu thức dựa trên một hàng của bảng, một EXCLUDE
ràng buộc đánh giá so sánh hai hàng trong bảng. Hãy nghĩ về nó giống như một UNIQUE
tổng quát ràng buộc:thay vì "không có hai hàng nào có thể bằng nhau", bạn có thể nói những điều như "không có hai hàng nào trùng nhau" hoặc thậm chí "không có hai hàng nào có thể khác nhau ".
Để đạt được điều này mà không cần kiểm tra mọi kết hợp giá trị có thể có, nó cần một cấu trúc chỉ mục thích hợp cho phép nó tìm ra các vi phạm có thể xảy ra khi bạn chèn hoặc cập nhật một hàng. Đây là những gì gist
một phần của khai báo đề cập đến: một loại chỉ mục cụ thể có thể được sử dụng để tăng tốc các hoạt động khác với bình đẳng.
Phần còn lại của khai báo là chính ràng buộc:c
là cột đang được kiểm tra và &&
là toán tử không được trả về true cho bất kỳ cặp hàng nào. Trong trường hợp này, &&
là toán tử "chồng chéo" như được liệt kê trên trang hướng dẫn toán tử hình học .
Vì vậy, tổng hợp lại, ràng buộc EXCLUDE USING gist (c WITH &&)
dịch thành "không có hai giá trị của c
phải chồng lên nhau (chính xác hơn là A.c && B.c
phải trả về false hoặc null cho tất cả các hàng riêng biệt A
và B
), và vui lòng sử dụng gist
chỉ mục để giám sát ràng buộc này ".