当其中一个字段为True时,我想在3个字段上添加UNIQUE INDEX。即等于1
UNIQUE INDEX pkg_box_delivered(package_id,box_id,已交付)WHERE deliver = 1;
我需要一个Alter语句以及如何将它添加到Create Table语句中。
答案 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)
);
正如您无法有选择地将索引应用于某些行一样,您无法有选择地应用唯一约束。您需要添加触发器来强制执行此操作。