如何将空字符串作为空值以允许在可选字段中重复的空字符串?

时间:2018-03-03 17:36:08

标签: sql postgresql unique-constraint unique-key

我有一个可选的电子邮件字段。正则表达式很好地接受空字符串(^ $),但现在的问题是空字符串被认为是唯一的条目。它只允许一个用户在不输入电子邮件地址的情况下进行注册。我知道我必须将它设置为null,但不确定如何。

这样的事情:

Duplicate entry '' for key 'users_email_unique' empty field

Error: Duplicate entry '' for key 'email'

1 个答案:

答案 0 :(得分:4)

您可以使用partial index

CREATE UNIQUE INDEX idx_unq_tab_email ON tab(email) WHERE TRIM(email) <> '';

<强> DBFiddle Demo

这样你仍然有UNIQUE约束加上原始值。