-1

当其中一个字段为真时,我想在 3 个字段上添加一个唯一索引。即等于1

唯一索引 pkg_box_delivered (package_id, box_id, Delivered) WHERE Delivered = 1;

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

4

1 回答 1

0

您不能在表中的某些行上创建索引 - 只能在表中的所有行上创建索引,而不管值如何。

我需要一个 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)
 );

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

于 2013-07-23T08:49:46.833 回答