当一个字段等于一个值时,3个字段上的Mysql UNIQUE INDEX

时间:2013-07-23 08:29:17

标签: mysql alter-table create-table unique-index

当其中一个字段为True时,我想在3个字段上添加UNIQUE INDEX。即等于1

UNIQUE INDEX pkg_box_delivered(package_id,box_id,已交付)WHERE deliver = 1;

我需要一个Alter语句以及如何将它添加到Create Table语句中。

1 个答案:

答案 0 :(得分:0)

您无法在表中某些行上创建索引 - 仅在 all 表中的行中创建索引,而不管值是多少。

  

我需要一个Alter语句以及如何将它添加到Create Table语句

使用ALTER TABLE更改现有表的定义,而CREATE TABLE创建表及其字段,因此如果表已存在....

 ALTER TABLE yourtablename 
   ADD UNIQUE INDEX pkg_box_delivered (package_id, box_id, delivered);

或者如果它还不存在......

 CREATE TABLE yourtablename (
         package_id INT NOT NULL,
         box_id INT NOT NULL,
         delivered BOOLEAN,
         ...
         UNIQUE INDEX pkg_box_delivered (package_id, box_id, delivered)
 );

正如您无法有选择地将索引应用于某些行一样,您无法有选择地应用唯一约束。您需要添加触发器来强制执行此操作。