【发布时间】:2014-11-20 05:56:32
【问题描述】:
我的表中有一个 varchar 列用于 url 值。我必须在不区分大小写的情况下使其在记录中独一无二。
我找到了两种方法来实现它。
-
在字段上创建唯一索引。
create unique index <index_name> on <tablename>(lower(<column_name>)) -
在字段上添加唯一约束为
ALTER TABLE person ADD CONSTRAINT person_name_unique UNIQUE(LOWER(first_name),LOWER(last_name));
从上述选择中采用什么有效的方法?
【问题讨论】:
-
这是对差异的非常全面的解释,没有明确评论效率:stackoverflow.com/a/7522004/110933
-
唯一约束在后台使用唯一索引,它们之间没有区别,唯一的区别是语法。
-
我更喜欢约束;区别在于语义。未来的开发人员可能会将约束视为一种文档形式:“这必须是不区分大小写的唯一”。唯一索引 OTOH 可能被解释为仅出于性能目的而创建:“此列恰好始终是不区分大小写的唯一”
标签: oracle