# 1.7.3.4 ENUM 和 SET 约束

枚举列提供了一种有效的方法来定义只能包含一组给定值的列。看第 11.3.5 节,“ENUM 类型”, 和第 11.3.6 节,“SET 类型”.

除非禁用严格模式(不推荐,但请参阅第 5.1.11 节,“服务器 SQL 模式”), 的定义枚举要么列作为输入到列中的值的约束。不满足这些条件的值会发生错误:

  • 一个枚举value 必须是列定义中列出的值之一,或其内部数字等价物。该值不能是错误值(即 0 或空字符串)。对于定义为的列枚举('a','b','c'), 值如'','d', 要么'斧头'无效并被拒绝。

  • 一种value 必须是空字符串或仅由以逗号分隔的列定义中列出的值组成的值。对于定义为的列SET('a','b','c'), 值如'd'要么'A B C D'无效并被拒绝。

    如果您使用,可以在严格模式下抑制无效值的错误插入忽略要么更新忽略.在这种情况下,会生成警告而不是错误。为了枚举, 该值作为错误成员插入 (0)。为了,除了删除任何无效的子字符串外,将按给定的方式插入该值。例如,'a,x,b,y'结果为'a,b'.