列a
およびb
、およびa,b
ペアからの複合一意キーを持つテーブルがあるとします。そして、列がありa=1, b=2
ます。
したがってa=1, b=2
、別の行を挿入することはできません。
しかし、このような状況で行を挿入することをどのように拒否できa=2, b=1
ますか?
例えば:
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');
2番目の挿入は機能しますが、失敗することを期待しています。
UNIQUE KEY uk_ab (a,b)
存在するa=2,b=1
場合に挿入を許可a=1,b=2
:(
例で投稿を更新しました。
—
アレクセイ
はい、それは正しいように聞こえます、それはそれらに同じ値の1つのレコードを許可するので、私にとって正しいように聞こえます。
—
ポン引きジュースIT
a=2,b=1
1つのレコードでa=1,b=2
あり、別のレコードです。aとbが何らかの値に等しい場合、それぞれが真であるレコードは1つしか持てないため、2つの例は異なり、同じではないので正しいです。それらが再び同じ場所に別のレコードを挿入し、それが機能していることを確認してください。
a=2
、b=1
ちょうどそれがために同じようにa=1
、b=2
あなたはすでにこの質問への答えを持っているので。これは、あなただけのどこのテーブルに1つのレコードを持っていることを意味だろうa=2
とb=1
、それがために働くだろうと同じようにa=1
してb=2
....その一意のキーコンボを許可された唯一のものをあなたは私にはコントロール下にそれを得たような音-そのレコードのために。 ...つまり、UNIQUE KEY 'uk_ab' ('a','b')
これはあなたの質問の例と同じように両方で機能します。