我试图基本上对postgresql架构强制执行一个唯一约束,我已经使用了如下的部分索引:
CREATE UNIQUE INDEX emails_email_key ON emails (email) WHERE verified = 'true'
虽然这通常用于验证是否存在单个经过验证的电子邮件,但我担心的是我是否可以创建数据库约束,以便在a@example.com
电子邮件和verified
设置为true
已经存在,我们可以禁止email
设置为a@example.com
的任何新记录,无论verified
列的值是多少。在我创建的约束中,我们可以插入新记录,电子邮件a@example.com
和verified
设置为false
,这对插入和电子邮件验证过程没有多大意义本身,但我将不得不在应用程序级别处理更多的情况,我希望我可以卸载到数据库约束本身。
任何建议都会有所帮助。谢谢!