2014-06-26 58 views
0

我試圖插入一個表中,在2列上有一個唯一的約束並且遇到了唯一約束錯誤。oracle - 唯一約束條件ORA-00001與大小寫敏感記錄

選擇不同的查詢返回以下記錄:

Record 1: 
ColA:A001 ColB:TV set A001 
Record 2: 
ColA:A001 ColB:Tv set A001 

對唯一約束驗證時,Oracle是否做區分大小寫的比較?例如,在上面的場景中,我們可以看到除ColB(TV verus Tv)之外的所有值都是相同的。不同的表明它們是兩個不同的記錄,而獨特的約束似乎認爲它們是相同的?

任何人都可以幫助澄清?

謝謝!

+0

請添加對錶和約束,表加你試圖執行INSERT語句的當前內容的DDL語句。 –

+0

http://stackoverflow.com/questions/3944840/create-unqiue-case-insensitive-constraint-on-two-varchar-fields可能有一個可接受的答案 – mc110

回答

1

默認情況下,Oracle區分大小寫。所以,TVTv不一樣。如果約束作爲實施:

create unique index table_colb on table(colb) 

(或create table聲明等價),那麼這兩個是不同的。如果你想不區分大小寫,然後用一個函數索引:

create unique index table_colb on table(lower(colb)) 
0

甲骨文是大小寫敏感的,您可以檢查DDL SQL Fiddle Demo

檢查NLS_COMP ANS NLS_SORT

select * from NLS_INSTANCE_PARAMETERS where parameter in ('NLS_SORT','NLS_COMP');