1

この種の一意性をどのように達成できますか..行のみを一意にする列はありません。ID # 2 には 10 月のレコードがあり、ID # 2 には res_month = 'October' の 2 つの情報があってはなりません

res_id | res_month | res_year
   1   | September | 2013
   2   | September | 2013
   3   | September | 2013
   4   | September | 2013 
   2   | October   | 2013
   3   | October   | 2013
   4   | October   | 2013 
4

2 に答える 2

1

UNIQUE KEY複数のフィールドに対して制約を構築できます。

ALTER TABLE tbl ADD UNIQUE KEY foo (res_id, res_month, res_year);

(fooは制約の名前です。よりわかりやすい名前を選択することをお勧めします)

この制約により、 と の各組み合わせres_idres_month1res_year回だけ発生することが保証されます。

これを使用するINSERTと、すでに保存されている組み合わせでUnique constraint failedエラーが発生します。あなたの例では、組み合わせが既に存在するため、これは失敗します。

INSERT INTO tbl (res_id, res_month, res_year) VALUES (2, 'October', '2013');
于 2013-10-06T12:43:12.937 に答える