首页 文章

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

提问于
浏览
24

我有一个包含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)

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

3 回答

  • 6

    在这些列上创建唯一键

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

    Oracle/PLSQL: Unique Constraints

  • 0

    首先,您应该使用下面的ALTER Query来删除现有的Constraint .

    ALTER TABLE table_name
       DROP CONSTRAINT myUniqueConstraint;
    

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

    For Example:

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

    Detailed explanation of UNIQUE Constraint here.

  • 46

    ALTER TABLE table_name DROP CONSTRAINT constraint_name;

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

相关问题