oracle - 独特约束ORA-00001 vs Case敏感记录

时间:2014-06-26 11:39:54

标签: sql oracle unique-constraint

我尝试插入一个对2列具有唯一约束的表,并遇到唯一约束错误。

选择不同的查询会返回以下记录:

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

oracle在验证唯一约束时是否进行区分大小写的比较?例如,在上面的场景中,我们可以看到除了ColB(TV verus Tv)之外的所有值都是相同的。区别显示它们是两个不同的记录,而独特的约束似乎认为它们是相同的?

任何人都可以帮忙解释一下吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

默认情况下,Oracle区分大小写。因此,TVTv不同。如果约束实现为:

create unique index table_colb on table(colb)

(或create table语句中的等价物),那么两者将是不同的。如果您想要不区分大小写,请使用功能索引:

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

答案 1 :(得分:0)

Oracle区分大小写您可以查看DDL SQL Fiddle Demo

检查 NLS_COMP ans NLS_SORT

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