0

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

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

是否可以保证除了这些 ENUM 之一之外,该列中永远不会有值?

4

2 回答 2

1

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

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

取自这里

如果将无效值插入 ENUM(即,允许值列表中不存在的字符串),则会将空字符串作为特殊错误值插入。这个字符串可以通过这个字符串的数值 0 与“普通”空字符串区分开来。有关枚举值的数字索引的详细信息,请参见第 11.4.4 节,“枚举文字的索引值”。

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

于 2013-07-04T13:02:46.280 回答
0

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

来源

于 2013-07-04T12:34:47.270 回答