2015-12-25 92 views
1

我有一個表的員工,我想補充的約束,這使得我能夠有ONLY一個員工與id_manager .. 我有我的代碼示例,但我認爲這是錯誤..SQL附加約束

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. 

回答

4

你說:

我想補充一個約束,這使得我能夠有一個員工與id_manager ONLY

所以,如果我正確理解這一點,那麼你可以在id_manager列中有重複項。你試圖限制的唯一的事情是確保不超過一行可以有null作爲id_manager的值。

如果是這樣的話,你要創建唯一索引與表達這樣只有空值被認爲是和驗證:

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