2

重複の可能性:
MySQLの複数の列に一意の制約を指定するにはどうすればよいですか?

私はMySQLを初めて使用し、MySQLに変換するテーブルがあります。このテーブルには、アカウントが通常注文するすべてのアイテムであるアカウントの「注文ガイド」が含まれています。アカウントのアイテム(製品番号)が、2つのフィールドの一意性の組み合わせに依存する注文ガイドテーブルにすでに存在する場合、挿入を防ぐ必要があります。注文ガイド表のデータの簡略化された例:

uID  Account_Num   Prod_Num
0    1000          2000
1    1000          2010
2    1000          2020
3    1000          2030
4    1001          2000
5    1001          2010
6    1001          2020
7    1001          2021

「Account_Num」フィールドと「Prod_Num」フィールドを一意にすることはできません。「Account_Num」と「Prod_Num」の組み合わせが一意であるかどうかを指定するルールなどを設定する方法が必要です。uIDフィールドは、一意の自動増分フィールドです。これは可能ですか?

4

3 に答える 3

11

インデックスが複数列になる可能性があることを知って喜ぶでしょう:-)

ALTER TABLE my_table ADD UNIQUE account_prod (Account_Num, Prod_Num);
于 2012-11-12T19:14:44.063 に答える
1
create unique index mytable_idx1 on mytable(Account_Num, Prod_Num);
于 2012-11-12T19:14:40.547 に答える
0

もちろん。

見て

INSERT INTO <yourtable> (cols)
  SELECT cols FROM <yourtable2>, <yourtable> where <yourcondition>

selectが新しいエントリのみを返すことを確認してください。

于 2012-11-12T19:15:14.467 に答える