我有一个电子邮件字段是可选的。regex可以很好地接受空字符串(^$),但现在的问题是空字符串被认为是唯一的条目。它只允许一个用户注册而不需要输入电子邮件地址。我知道我必须将其设置为空,但不确定如何设置。
像这样的:
Duplicate entry '' for key 'users_email_unique' empty field
Error: Duplicate entry '' for key 'email'

最佳答案

创建在插入或更新时将空白转换为空的触发器:

create trigger null_email
before insert or update on users
for each row
new.email = nullif(old.email, '')

或在插入时将空白转换为空:
insert into users (..., email, ...)
values (..., nullif(?, ''), ...)

触发器是更好的方法,因为它处理来自任何源的数据,而方法2将要求每个应用程序的insert/update SQL符合“no blanks”规则。

关于sql - 如何使空字符串为空值以允许在可选字段中重复空字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49087149/

10-09 05:49
查看更多