use*_*616 16 postgresql postgresql-9.1
我想在varchar列中实现不区分大小写的唯一性.但是,Postgres中没有不区分大小写的文本数据类型.由于原始文本大小并不重要,因此在插入具有UNIQUE约束的列之前将全部转换为小写/大写是一个好主意.此外,它将需要一个INDEX快速搜索.
Postgres有没有办法在插入之前操作数据?
我看了另外一个问题:如何自动将MySQL列转换为小写.它建议在插入/更新时使用触发器来使用小写文本或使用带有小写文本的视图.但是,所提出的方法都没有确保唯一性.
此外,由于这些数据将由各种应用程序读取/写入,因此在每个单独的应用程序中降低数据并不是一个好主意.
a_h*_*ame 29
您不需要不区分大小写的数据类型(尽管有一个)
CREATE UNIQUE INDEX idx_lower_unique
ON your_table (lower(the_column));
Run Code Online (Sandbox Code Playgroud)
这样你甚至不必乱用原始数据.
Cra*_*ner 20
ALTER TABLE your_table
ADD CONSTRAINT your_table_the_column_lowercase_ck
CHECK (the_column = lower(the_column));
Run Code Online (Sandbox Code Playgroud)
从手册:
使用索引来强制执行唯一约束可以被视为不应直接访问的实现细节.
| 归档时间: |
|
| 查看次数: |
9900 次 |
| 最近记录: |