#### 1.7.3.4 ENUM 和 SET 约束

[`枚举`](enum.html)和[`放`](set.html)列提供了一种有效的方法来定义只能包含一组给定值的列。看[第 11.3.5 节，“ENUM 类型”](enum.html)， 和[第 11.3.6 节，“SET 类型”](set.html).

除非禁用严格模式（不推荐，但请参阅[第 5.1.11 节，“服务器 SQL 模式”](sql-mode.html)), 的定义[`枚举`](enum.html)要么[`放`](set.html)列作为输入到列中的值的约束。不满足这些条件的值会发生错误：

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

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

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