在mysql的唯一列中接受空值

时间:2018-09-29 13:12:36

标签: mysql

我有这张桌子

----------------------------------------
ID | company_id | barcode | product_name
----------------------------------------

我想对公司和条形码列进行唯一的约束,因此相同的company_id不能具有相同的条形码编号...但是相同的company_id可以仅具有空条形码...如何在MySQL中做到这一点?

任何帮助将不胜感激..谢谢

2 个答案:

答案 0 :(得分:0)

您需要添加一个Composite Unique constraint

ALTER TABLE your_table_name
ADD CONSTRAINT unique_barcode_company_idx UNIQUE (company_id, barcode);

SQL Fiddle DEMO

详细信息:

  • MySQL 在具有唯一约束的列中允许多个NULL值。
  • 因此,基本上,您可以有多个包含(1, null)的行,其中1代表company_idnull代表barcode

答案 1 :(得分:0)

您可以将复合唯一键添加为:

ALTER TABLE sometable_name ADD UNIQUE INDEX `unq_indx` (`company_id`,`barcode`);

在同一公司名称的条形码列中允许多个空值。