2

可能重复:
如何为 MySQL 中的多个列指定唯一约束?

我是 MySQL 的新手,并且有一个表,我正在转换为 MySQL,其中包含帐户的“订单指南”,这些帐户通常是一个帐户订购的所有项目。如果帐户的项目(产品编号)已经在订单指南表中,我需要防止插入,这取决于两个字段的唯一性组合。订单指南表中数据的简化示例:

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>

确保选择只返回新条目。

于 2012-11-12T19:15:14.467 回答