2010-08-14 88 views
3

好傢伙,我只是爲我的問題:)很抱歉新手MySQL的值限制爲1個0

我已經在使用焦炭,TINYINT,布爾和CHECK約束嘗試。

這裏是我的CHECK約束:

CHECK (user_type>=0 AND user_type<=1) 

但我仍可以插入值大於1,所有我要的只是1和0。 我將使用它作爲我的用戶類型。 儘管我可以在前端級別驗證這一點,但我仍然希望在數據庫中進行此操作。提前:)

+0

相關:http://stackoverflow.com/questions/3414421/does-my-sql-supports-check-constraint – 2010-08-14 17:59:29

+0

'INT(1)'不工作? – strager 2010-08-14 18:03:47

+0

strager - 'INT'列可以包含0和1以外的值。'(1)'只設置顯示寬度;它不限制可能存儲的值。儘管它確實限制了存儲的值,但你仍然可以存儲2到9個。 – Hammerite 2010-08-14 18:40:57

回答

3

感謝CHECK子句會被分析,但是忽略所有的存儲引擎。 (Source)

如果您真的想這樣做,您可以創建一個包含值0和1的表並設置外鍵約束。

+0

那麼你有什麼建議馬克爵士? – Barry 2010-08-14 17:58:31

+0

啊好吧,我認爲這樣做,謝謝。 再次,對於我的問題感到抱歉,我知道它對你們很簡單,仍然是這裏的學生,謝謝:) – Barry 2010-08-14 18:00:57

0

如果您確實希望強制執行該約束,則使用這兩個值構建表boolconstants並使用外鍵約束。黑客的位,但適用於所有枚舉值:)

4

使用setenum作爲colum類型。然後定義值(例如:1,0):)