2013-03-21 3 views
0

Я пытаюсь добавить ограничение проверки на MySQL только для допустимых адресов электронной почты и из того, что у меня уже есть синтаксис: Alter Table Book Добавить Constraint CheckEmail Check (электронная почта Like '% @% ._% ')MySQL Check Constraint для адресов электронной почты

Моя таблица - это книга, и у нее есть столбец, называемый электронной почтой с адресами электронной почты.

Другие ссылки, кажется, подтверждает это должно быть правильно: TSQL Email Validation (without regex)

ли это выглядеть хорошо?

Выполнено правильно, но после этого я могу добавить запись «h». Какие-нибудь идеи, что здесь не так?

Я нахожусь на mySQL 5.1.

+1

Лучшая идея (я лично считаю) будет проверять ваш ввод электронной почты на любом языке, который вы используете, чтобы делать ваши запросы, например php. Вы даже можете проверить DNS, чтобы убедиться, что хостинг реальный. – Ryoku

+0

Я читал в другом месте, что лучшая идея состоит в том, чтобы ограничить это в самой базе данных, но я написал это на PHP, поэтому, если другие люди не вернутся, я мог бы попробовать посмотреть на это. Я не думаю, что дошел бы до проверки DNS, но ценю ваши идеи. –

+0

В этой статье вы можете найти логику полной функции для проверки правильности адреса электронной почты с помощью php и самой функции. Надеюсь, это поможет, если вы пойдете с этим решением. http://www.linuxjournal.com/article/9585?page=0,3 – Ryoku

ответ

1

В MySQL фактически отсутствуют ограничения проверки. Он не будет закрыт, если вы включите их, но также не будет выполнять их проверку. На этот вопрос ответили более подробно в StackOverflow [1] и много раз на форумах MySQL, включая оба обсуждения [3] и ошибки [2]. Обратите внимание, что MySQL поддерживает принудительное ограничение внешних ключей и UNIQUE. Для этого используйте InnoDB.

Смежные вопросы