无法找到以下问题/问题的直接答案。
我创建了一个数据库,其中一个字段的类型为ENUM,限制为NOT NULL。
它工作正常,但是当我尝试插入一个具有该字段不允许的值的记录时,记录不会被拒绝,但无论如何都要插入该字段为空。也就是说,我认为它是一个空字符串(“”),因为我添加了限制NOT NULL。
我希望记录当然会被拒绝。我怎样才能做到这一点。
我认为样本代码不是必需的,因为它是常识。
答案 0 :(得分:1)
如果在ENUM列中插入了不正确的值,或者如果使用IGNORE将值强制插入ENUM列,则会将其设置为保留的枚举值0,该值在字符串上下文中显示为空字符串。
http://dev.mysql.com/doc/refman/5.1/en/constraint-enum.html
试试这个:
SET sql_mode = 'STRICT_ALL_TABLES'; or STRICT_TRANS_TABLES
取决于您的表是事务性还是非事务性。这应该通过mySQL来处理它,并使它在方法尝试运行之前使用完整性约束中止和回滚。
答案 1 :(得分:0)
我发现你应该在mysql中启用严格模式。要做到这一点,你应该:
这是MySQL级别的解决方案。如果您尝试在ENUM字段中插入空值,则现在应该拒绝它。