2013-03-21 177 views
0

我试图在MySQL上添加一个检查约束,只允许有效的电子邮件地址,并且从我已经有的语法看起来是这样的: Alter Table book添加约束CheckEmail检查(电子邮件像'%@%._%')MySQL的电子邮件地址约束检查

我的表是电子书,它有一个名为电子邮件的列,它具有电子邮件地址。

其他链接似乎证实了这一点应该是正确的: TSQL Email Validation (without regex)

这是否看行吗?

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

我在mySQL 5.1上。

+1

最好的想法(我个人认为)将检查您的电子邮件输入与任何语言,你正在使用你的查询,如PHP。你甚至可以检查DNS以确保主机是真实的。 – Ryoku 2013-03-21 23:27:59

+0

我已经在其他地方读过,最好的想法是限制数据库本身,但我已经用PHP写了这个,所以如果其他人不回来,我可能会试着看。我不认为我会尽力检查DNS,但感谢您的想法。 – 2013-03-21 23:33:49

+0

在本文中,您可以找到完整功能背后的逻辑,用php和函数本身来验证电子邮件地址。我希望它能帮助你解决这个问题。 http://www.linuxjournal.com/article/9585?page=0,3 – Ryoku 2013-03-21 23:45:25

回答

1

MySQL实际上并没有强制执行检查约束。如果包含它们,它不会被禁止,但它也不会执行它们的检查。这个问题在StackOverflow [1]的其他地方得到了回答,并且在MySQL论坛中多次提到,包括讨论[3]和错误[2]。请注意,MySQL确实支持实施外键约束和UNIQUE。为此使用InnoDB。