constraint-enum.md 1.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
#### 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'`.