【问题标题】:MySQL Check Constraint for email addressesMySQL 检查电子邮件地址的约束
【发布时间】:2013-03-11 16:47:08
【问题描述】:

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

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

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

这看起来好吗?

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

我使用的是 mySQL 5.1。

【问题讨论】:

  • 最好的办法(我个人认为)是使用您用来查询的任何语言检查您的电子邮件输入,例如 php。您甚至可以检查 DNS 以确保托管是真实的。
  • 我在其他地方读到过,最好的办法是将其限制在数据库本身上,但我是用 PHP 编写的,所以如果其他人不回来,我可能会尝试查看它。我认为我不会去检查 DNS,但感谢您的想法。
  • 在本文中,您可以找到完整函数背后的逻辑,以真正使用 php 验证电子邮件地址以及函数本身。如果您确实使用此解决方案,我希望它会有所帮助。 linuxjournal.com/article/9585?page=0,3

标签: mysql check-constraints


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2022-01-06
    • 1970-01-01
    • 2011-04-16
    • 2017-07-21
    • 1970-01-01
    • 2019-12-29
    • 2010-10-22
    • 2017-10-09
    • 2011-07-14
    相关资源
    最近更新 更多