一个不可为null的MySQL枚举列是否保证只包含这些值?

一个不可为null的MySQL枚举列是否保证只包含这些值?,mysql,enums,Mysql,Enums,如果我在MySQL数据库中有一列: 不可为空 是具有5个可能值的枚举 具有这些枚举的默认值1 是否可以保证该列中除了其中一个枚举之外永远不会有其他值 如果启用了严格SQL模式,尝试插入无效的枚举值将导致错误 默认情况下不是这样-除了枚举的值之外,您的列还可以有一个值,即列中的空字符串 您必须在MySQL中启用严格的SQL模式,才能保证只出现枚举值(如果列可为NULL,则为NULL) 取自 如果在枚举中插入无效值(即字符串不是 出现在允许值列表中),插入空字符串 而是作为一个特殊的错误值。这个

如果我在MySQL数据库中有一列:

  • 不可为空
  • 是具有5个可能值的枚举
  • 具有这些枚举的默认值1
是否可以保证该列中除了其中一个枚举之外永远不会有其他值

如果启用了严格SQL模式,尝试插入无效的枚举值将导致错误


默认情况下不是这样-除了枚举的值之外,您的列还可以有一个值,即列中的空字符串

您必须在MySQL中启用严格的SQL模式,才能保证只出现枚举值(如果列可为NULL,则为NULL)

取自

如果在枚举中插入无效值(即字符串不是 出现在允许值列表中),插入空字符串 而是作为一个特殊的错误值。这个字符串可以区分 从一个“正常”的空字符串中 数值为0。见第11.4.4节“枚举的索引值 “文本”,了解有关枚举的数字索引的详细信息 价值观

如果启用了严格SQL模式,则会尝试插入无效的枚举值 导致错误


对下面是一些文本虽然答案是正确的(MySQL没有基本的检查约束),但它没有解决
enum
列是否验证定义的值的问题。