2010-08-14 78 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):)