2010-01-18 57 views
1

我以爲你可以將varchar設置爲varchar(min,max),但我一定誤會了。什麼是語法來設置最小值和最大值?或者我必須使用PHP來做到這一點?varchar的最小值?

更新: 讓我添加更多的上下文。我正在創建一個用戶名字段,所以我想我可以在MySQL中設置varchar的最小值和最大值。似乎我只能設置爲0到255的長度。我猜這意味着我必須使用PHP來添加最小限制

回答

5

您不能在MySQL中爲VARCHAR字段設置最小長度。儘管jspcal的答案,沒有這樣的最小長度限制。

最大簡直是VARCHAR(最大值)

是的,你必須使用PHP來限制長度。就我個人而言,我使用應用程序代碼來執行所有我的約束驗證,並且只依靠數據庫作爲最後的手段/故障安全。

在應用程序中檢測無效數據並返回有用的錯誤消息比捕獲數據庫異常更好,並且必須將其解釋/轉換爲相應的錯誤消息。

+0

「你必須使用PHP來限制長度」 - 這是* false *。顯然你從來沒有聽說過觸發器,這就是mysql如何實現約束:http://forge.mysql.com/wiki/Triggers#Emulating_Check_Constraints。閱讀和學習。 – jspcal 2010-01-18 06:39:39

1

更好的做它在PHP中,MySQL將需要一些觸發器來執行約束。

+0

MySQL下有約束嗎? – zneak 2010-01-18 06:10:13

+0

-1:只是錯誤 – hobodave 2010-01-18 06:11:06

+0

你的原始答案是「是的,你可以用約束來做到這一點」。你完全改變了你對CYA答案的正文。 – hobodave 2010-01-18 06:15:03