1.7.3.4 ENUM和SET约束

 

ENUM和 SET列提供了一种有效的方式来定义只能包含一组给定值的列。请参见第11.3.5节“ ENUM类型”和 第11.3.6节“ SET类型”

除非禁用了严格模式(不建议这样做,但请参见 第5.1.11节“服务器SQL模式”),ENUM否则a 或 SETcolumn 的定义将成为 对输入到该列中的值的约束。不满足以下条件的值会发生错误:

  • ENUM值必须是列定义中列出 的值之一,或其内部等效数字。该值不能是错误值(即0或空字符串)。对于定义为一列 ENUM('a','b','c'),值,如'''d'或者 'ax'是无效的,并且将被拒绝。

  • SET值必须是空字符串或仅由在列定义中列出的值的一个值由逗号分隔。对于定义为的列 SET('a','b','c'),诸如'd'或的 值'a,b,c,d'无效并且被拒绝。

如果使用INSERT IGNORE或,则可以在严格模式下抑制无效值的错误UPDATE IGNORE。在这种情况下,将生成警告而不是错误。对于 ENUM,该值将作为错误成员(0)插入。对于 SET,将按给定值插入,除了删除所有无效的子字符串外。例如,'a,x,b,y'结果为 'a,b'

上一篇:Linux下的 Mysql 8.0 yum 安装 并修改密码


下一篇:【C++小知识】#define、enum、const的含义与用法