SQL添加约束

时间:2015-12-25 14:40:34

标签: sql oracle

我有一个表员工,我想添加一个约束,这使我能够 ONLY 一个id_manager null 的员工。 我的代码中有一个示例,但我认为这是错误的。

ALTER TABLE employees ADD CONSTRAINT u_t UNIQUE (id_manager);

这就是我得到的错误。

SQL Error: ORA-02299: (OPREAC_IDD.U_T)
02299. 00000 - "cannot validate (%s.%s) - duplicate keys found"
*Cause:    an alter table validating constraint failed because the table has
       duplicate key values.

1 个答案:

答案 0 :(得分:4)

你说:

  

我想添加一个约束,这使我能够一名id_manager null 的员工。

因此,如果我理解正确,您可以在id_manager列中找到重复项。您尝试限制的唯一事项是确保只有一行可以null作为id_manager的值。

如果是这种情况,您将需要使用表达式创建唯一索引,以便仅考虑和验证空值:

create unique index emp_idx
on employees (case when id_manager is null then 1 end)