在两个varchar字段上创建唯一的不区分大小写的约束

时间:2010-10-15 18:05:14

标签: sql oracle10g unique-constraint

在Oracle 10g中,如何在两个varchar字段上添加唯一的不区分大小写的约束?例如,假设表中已有以下记录:

"Stephen", "Swensen"
"John", "Smith"

以下插入无效:

"stephen", "Swensen"
"John", "smith"
"stephen", "swensen"

但以下插入有效:

"Stephen", "Smith"
"John", "Swensen"

2 个答案:

答案 0 :(得分:8)

我设法通过以下方式让它发挥作用:

CREATE UNIQUE INDEX person_name_upper ON person(
    UPPER(first_name), UPPER(last_name));

答案 1 :(得分:7)

假设您的表名为 person ,并且名字和姓氏列名为 first_name last_name ,请添加此唯一约束:< / p>

ALTER TABLE person ADD CONSTRAINT person_name_unique
    UNIQUE(LOWER(first_name),LOWER(last_name));

如果我正确理解您的问题并对您的表格布局做出正确的假设,请告诉我。