是不可为空的,MySQL枚举列保证只包含这些值?

时间:2013-07-04 12:32:32

标签: mysql enums

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

  • 不可为空
  • 是具有5个可能值的ENUM
  • 这些ENUM的默认值为1

可以保证除了其中一个ENUM之外,该列中永远不会有值吗?

2 个答案:

答案 0 :(得分:1)

默认情况下 - 除了枚举值(列中的空字符串)之外,列还可以有一个值。

你必须在MySQL中启用严格的SQL模式,以保证只发生枚举值(如果列可以为空,则为NULL)。

取自here

  

如果在ENUM中插入无效值(即不是字符串   如果出现在允许值列表中,则插入空字符串   而是作为特殊的错误值。可以区分此字符串   来自“正常”的空字符串,因为该字符串具有   数值0.请参见第11.4.4节“枚举的索引值”   文字“有关枚举的数字索引的详细信息   值。

     

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

答案 1 :(得分:0)

  

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

Source