38

我有一个有 4 列的表

每列将是 A、B、C、D

A 列是主键。B 列具有唯一名称约束。

现在我想删除 B 列的唯一约束,并通过组合 B、C 和 D 列给出唯一约束。因此该表将只允许 B、C 和 D 列中具有特定值的一行。

我怎样才能给出这种类型的约束?

我尝试给复合唯一键,如:

ALTER TABLE TABLENAME ADD CONSTRAINT CONSTRAINT_NAME UNIQUE (COLUMN_B, COLUMN_C, COLUMN_D)

但它正在检查是否存在任何一个约束,而不是检查唯一键约束的组合。

4

3 回答 3

63

在这些列上创建唯一键

ALTER TABLE YourTable
  add CONSTRAINT YourTable_unique UNIQUE (B, C, D);

Oracle/PLSQL:独特的约束

于 2013-06-27T12:48:13.327 回答
9

首先,您应该使用下面的 ALTER Query 删除现有的约束。

ALTER TABLE table_name
   DROP CONSTRAINT myUniqueConstraint;

现在,您可以使用关键字 UNIQUE 和所需列的组合来创建UNIQUE约束。

例如:

ALTER TABLE table_name
   ADD CONSTRAINT myUniqueConstraint UNIQUE(B, C, D);

UNIQUE Con​​straint 的详细解释在这里。

于 2013-06-27T12:47:58.557 回答
2

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

CREATE UNIQUE INDEX constraint_name ON table_name (B,C,D)

于 2015-05-14T06:09:22.423 回答