Giả sử có bảng với các cột a
và b
và với khóa duy nhất tổng hợp từ a,b
cặp. Và có hàng a=1, b=2
.
Vì vậy, tôi không thể chèn một hàng khác a=1, b=2
, đó là ok.
Nhưng làm thế nào tôi có thể từ chối trong tình huống này cũng chèn hàng a=2, b=1
?
Ví dụ:
CREATE TABLE `t` (`a` INT, `b` INT);
ALTER TABLE `t` ADD UNIQUE(`a`, `b`);
INSERT INTO `t` (`a`, `b`) VALUES ('1', '2');
INSERT INTO `t` (`a`, `b`) VALUES ('2', '1');
Chèn thứ hai hoạt động, mặc dù tôi hy vọng nó sẽ thất bại.
UNIQUE KEY uk_ab (a,b)
cho phép chèn a=2,b=1
khi a=1,b=2
tồn tại :(
Đã cập nhật bài viết với ví dụ.
—
Alexey
Vâng, điều đó nghe có vẻ đúng, nó sẽ cho phép một bản ghi của các giá trị tương tự để âm thanh đó đúng với tôi.
—
Pimp Juice IT
a=2,b=1
là một bản ghi và a=1,b=2
là một bản ghi khác. Bạn chỉ có thể có MỘT bản ghi trong đó mỗi bản ghi là đúng trong đó a và b bằng một số giá trị để hai ví dụ của bạn khác nhau và không giống nhau để điều đó là chính xác. Hãy thử chèn một bản ghi khác trong đó các bản ghi đó lại giống nhau và xác nhận nó đang hoạt động.
a=2
,b=1
giống như nó sẽ làma=1
,b=2
vì vậy bạn đã có câu trả lời cho câu hỏi này. Điều này có nghĩa là bạn chỉ có thể có 1 bản ghi trong bảnga=2
vàb=1
khi nó hoạt động choa=1
vàb=2
cho bản ghi đó - chỉ được phép với một tổ hợp phím duy nhất đó .... Âm thanh như bạn đã kiểm soát được tôi. ... tức làUNIQUE KEY 'uk_ab' ('a','b')
điều này sẽ hoạt động tương tự cho CẢ HAI như trong ví dụ của bạn từ câu hỏi của bạn.