在Oracle 10g中,如何为两个varchar字段添加唯一的不区分大小写的约束?例如,假设表中已有以下记录:
"Stephen", "Swensen"
"John", "Smith"
以下插入内容无效:
"stephen", "Swensen"
"John", "smith"
"stephen", "swensen"
但是以下插入是有效的:
"Stephen", "Smith"
"John", "Swensen"
我已经设法让它工作了:
CREATE UNIQUE INDEX person_name_upper ON person(
UPPER(first_name), UPPER(last_name));
假设您的表名为 person,名字列和姓氏列分别称为 first_name 和 last_name,请添加以下唯一约束:
ALTER TABLE person ADD CONSTRAINT person_name_unique
UNIQUE(LOWER(first_name),LOWER(last_name));
请告诉我我是否正确理解了您的问题并对您的表格布局做出了正确的假设。
您需要创建一个新的唯一索引
CREATE UNIQUE INDEX person_name_upper ON person(UPPER(first_name), UPPER(last_name));
或
CREATE UNIQUE INDEX person_name_upper ON person(LOWER(first_name), LOWER(last_name));
请记住,像 LOWER 或 UPPER 这样的函数在约束内不起作用
CONSTRAINT first_last_name_unique UNIQUE (LOWER(first_name), LOWER(last_name)) *it does not work*