chế SQL áp dụng cho mỗi hàng trong bảng. Bạn không thể làm cho chúng có điều kiện dựa trên các giá trị dữ liệu nhất định.
Tuy nhiên, nếu bạn có thể sử dụng NULL
thay vì bằng không, bạn có thể khắc phục ràng buộc duy nhất. Ràng buộc duy nhất cho phép nhiều mục nhập có NULL
. Lý do là tính duy nhất có nghĩa là không có hai số giá trị bằng nhau có thể tồn tại. Bình đẳng nghĩa là value1 = value2
phải đúng. Nhưng trong SQL, NULL = NULL
là không rõ, không đúng sự thật.
CREATE TABLE MyTable (id SERIAL PRIMARY KEY, userid INT, data VARCHAR(64));
INSERT INTO MyTable (userid, data) VALUES ( 1, 'foo');
INSERT INTO MyTable (userid, data) VALUES ( 1, 'bar');
INSERT INTO MyTable (userid, data) VALUES (NULL, 'baz');
Cho đến nay rất tốt, bây giờ bạn có thể nghĩ rằng những điều khoản sau đây sẽ vi phạm các hạn chế duy nhất, nhưng họ không:
INSERT INTO MyTable (userid, data) VALUES ( 1, 'baz');
INSERT INTO MyTable (userid, data) VALUES (NULL, 'foo');
INSERT INTO MyTable (userid, data) VALUES (NULL, 'baz');
INSERT INTO MyTable (userid, data) VALUES (NULL, 'baz');
Nguồn
2010-01-13 18:12:40
tuyệt vời, cảm ơn! Như tôi đã nói tôi đã sử dụng một giải pháp khác, nhưng bạn đã cho tôi một câu trả lời hoàn hảo cho câu hỏi của tôi và tôi chắc chắn sẽ sử dụng nó trong tương lai =) – Mala