2013-03-21 34 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。