0

我正在尝试在 MySQL 上添加一个检查约束,以仅允许有效的电子邮件地址,并且从我已有的语法看来:Alter Table book Add Constraint CheckEmail Check (email Like ' %@ %._%')

我的桌子是书,它有一个名为 email 的列,其中包含电子邮件地址。

其他链接似乎确认这应该是正确的: TSQL Email Validation (without regex)

这看起来好吗?

这执行正确,但在此之后我可以添加一个条目'h'。有什么想法吗?

我在 mySQL 5.1 上。

4

2 回答 2

0

MySQL 实际上并不强制执行检查约束。如果您包含它们,它不会出错,但它也不会强制它们检查。这个问题在 StackOverflow [ 1 ] 的其他地方和 MySQL 论坛中的讨论 [ 3 ] 和错误 [ 2 ] 中都得到了更详细的回答。请注意,MySQL 确实支持强制执行外键约束和 UNIQUE。为此使用 InnoDB。

于 2013-04-11T17:26:58.493 回答
0

是的,您可以从 MySQL 8 开始使用检查约束:

ALTER TABLE `user` 
ADD CONSTRAINT `user.email_validation` 
    CHECK (`email` REGEXP "^[a-zA-Z0-9][a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]*?[a-zA-Z0-9._-]?@[a-zA-Z0-9][a-zA-Z0-9._-]*?[a-zA-Z0-9]?\\.[a-zA-Z]{2,63}$");
于 2022-02-02T06:53:03.880 回答