【发布时间】:2011-07-02 18:03:52
【问题描述】:
我有一个包含两列的“用户”表,“电子邮件”和“新电子邮件”。我需要:
覆盖两列的不区分大小写的唯一性约束 - 即,如果“Bob@Example.com”出现在一行的“电子邮件”列中,则将“bob@example.com”插入另一行(甚至同一行的)“new_email”列应该失败。
在“电子邮件”或“新电子邮件”字段中快速不区分大小写地搜索给定电子邮件地址 - 即查找新电子邮件或电子邮件为“Bob@example.com”的行,不区分大小写。
我知道我可以通过创建一个相关的“电子邮件”表来更轻松地做到这一点,但我希望从多个应用程序中查找该表中的用户(按主键),我想避免在各个地方复制连接逻辑以检索他们的电子邮件。因此,如果可能的话,我认为某种表达索引是最好的。
如果这不可能,我想我的下一个最佳选择是创建一个视图,其他应用程序可以使用该视图轻松获取用户的电子邮件及其其他信息,但我不知道该怎么做要么。
我正在使用 Postgres 8.4。谢谢!
【问题讨论】:
标签: sql postgresql indexing