当其中一个字段为True时,我想在3个字段中添加一个UNIQUE INDEX。即等于1当一个字段等于某个值时,3个字段上的Mysql UNIQUE INDEX
UNIQUE INDEX pkg_box_delivered(package_id,box_id,delivered)WHERE delivered = 1;
我需要一个Alter语句以及如何将它添加到Create Table语句中。无论其价值只在所有的表中的行 -
当其中一个字段为True时,我想在3个字段中添加一个UNIQUE INDEX。即等于1当一个字段等于某个值时,3个字段上的Mysql UNIQUE INDEX
UNIQUE INDEX pkg_box_delivered(package_id,box_id,delivered)WHERE delivered = 1;
我需要一个Alter语句以及如何将它添加到Create Table语句中。无论其价值只在所有的表中的行 -
不能创建在在一个表中的行的一些指数。
我需要一个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)
);
正如您不能有选择地将索引应用于某些行一样,您无法选择性地应用唯一约束。你需要添加一个触发器来执行此操作。
要清楚,你想强制执行一个限制,即没有两个记录的'package_id'和'box_id'具有相同的值 - 但只有'deliver = 1'的地方? – eggyal