找不到以下问题/问题的直接答案。
我创建了一个数据库,其中一个字段是 ENUM 类型并且限制不是 NULL。
它工作正常,但是当我尝试插入具有该字段不允许的值的记录时,记录不会被拒绝,但无论如何都会在字段为空的情况下插入。也就是说,我认为它是一个空字符串(“”),因为我添加了限制 NOT NULL。
我当然希望整个记录被拒绝。我怎样才能做到这一点。
我认为示例代码不是必需的,因为它是常识。
如果您在 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 处理它,并在该方法甚至尝试操作之前导致它以完整性约束中止和回滚。
我发现你应该在 mysql 中启用严格模式。为此,您应该:
这是 MySQL 级别的解决方案。如果您尝试在 ENUM 字段中插入一个空值,它现在应该被拒绝。