1

mysql で 2 つの列を一意にすることはできますが、一方の列に挿入された値は、もう一方の列にある場合は重複していると見なされますか?

私はこのコードを試してみましたが、うまくいきません:

ALTER TABLE test 
ADD UNIQUE myunique ( col1 ,col2 ) 

編集:

答えてくれてありがとう、私は他の解決策を見つけますが、トリガーのあるものは避けてください

4

2 に答える 2

2

いいえ、ネイティブの MySQL Constraint でそれを行う方法はありません。

両方UNIQUE ( col1 ,col2 ) の列の「組み合わせ」は一意であると見なされます。したがって、別の (a,a) がない限り、(a,a) は許可されます。それはあなたが望むものではないようです。

トリガーを使用してみることができますが、それはかなり不器用です。

なぜ 2 つの列が必要なのですか? 列が同じ項目を表している場合 (重複は許可されていないため)、1 つの列の方が優れているのではないでしょうか? 他に違いがある場合は、「ランク」の2番目の列を追加できます...

于 2012-04-04T07:29:54.993 に答える
-1

あなたのコード

 ALTER TABLE test 
ADD UNIQUE myunique ( col1 ,col2 ) 

複合的な一意のインデックスが作成され、col1 と col2 の重複エントリが分離されるため、機能しません。あなたが言ったように、これは必要ありません。

私はまだ試していませんが、目的のトリガーを試しましたか?

于 2012-04-04T07:30:31.353 に答える