MySQL中多列的唯一约束条件

3

大家好,我在数据库中有这个表:

-------------------------------------------------------------
ID | COMPANY_ID | NAME | DESCRIPTION | BARCODE 
-------------------------------------------------------------

我希望您能制定一个限制条件,即“相同的公司ID应输入唯一的条形码”....那么在MySQL中如何实现呢?
注:我可以在表格中输入多个公司ID。

在表格中可以多次输入相同的公司 ID 吗? - Madhur Bhaiya
@MadhurBhaiya 是的 - firstName lastName
1个回答

7
您需要在表中为COMPANY_IDBARCODE添加一个组合的唯一约束。这基本上意味着它不允许具有重复值组合的行,对于这两个字段而言。但它仍可分别允许它们中任何一个拥有重复值。
例如:(1, 'abc')的组合将无法在多行中共存。然而,(1, 'abc')(1, 'def')可以共存。因此,对于单个值它仍允许有重复值(在此例中是Company_id)。
请按以下方式操作(根据实际需求更改表和列名):
ALTER TABLE your_table_name 
ADD CONSTRAINT unique_barcode_company UNIQUE (COMPANY_ID, BARCODE)

但是这样我可以在同一公司ID中输入相同的条形码,这正是我不想发生的。 - firstName lastName
1
@firstNamelastName 不,它不允许相同的公司ID使用相同的条形码,因为这样会产生重复,而此约束条件可以防止在表中创建重复数据。 - Madhur Bhaiya
但它不允许重复的公司ID! - firstName lastName
@firstNamelastName 它将允许。例如:公司ID = 1,它将允许(1,'abc'),(1,'cdf'),(1,'efg')等。 - Madhur Bhaiya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接