如何为Oracle中的列组合提供唯一约束?

时间:2013-06-27 12:43:08

标签: sql oracle constraints unique-constraint composite-key

我有一个包含4列的表

每列将为A,B,C,D

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

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

我如何提供这种类型的约束?

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

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

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

3 个答案:

答案 0 :(得分:47)

在这些列上创建唯一键

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

Oracle/PLSQL: Unique Constraints

答案 1 :(得分:6)

  

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

ALTER TABLE table_name
   DROP CONSTRAINT myUniqueConstraint;
  

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

例如:

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

Detailed explanation of UNIQUE Constraint here.

答案 2 :(得分:0)

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

在table_name上创建UNIQUE INDEX constraint_name (B,C,d)