如果我在ENUM中插入无效值,MySQL将返回什么?
如果禁用了严格的SQL模式,并且我们向ENUM中插入了无效值(不在允许的枚举值列表中),则MySQL将插入一个空字符串,而不是引发错误。但是,如果启用了严格的SQL模式,则MySQL在插入无效值时会引发错误。
例
禁用严格的SQL模式后,我们将无效的字符串插入到ENUM中,如下所示:
mysql> Insert into result(id, name, grade) values(100, 'Gaurav','abcd'); mysql> Select * from result; +-----+--------+-------+ | Id | Name | Grade | +-----+--------+-------+ | 100 | Gaurav | | +-----+--------+-------+ 1 row in set (0.00 sec)
从上面的查询中,我们可以看到MySQL在无效字符串的位置插入了一个空字符串,并且未引发任何错误。
现在,借助以下查询,我们可以获得索引号0,它确认MySQL插入的字符串为空字符串,因为空字符串的索引值始终为0。
mysql> Select Grade + 0 from result; +-----------+ | Grade + 0 | +-----------+ | 0 | +-----------+ 1 row in set (0.00 sec)
但是,在启用SQL严格模式后(如下面的查询所示),MySQL在将无效字符串插入ENUM中时引发错误。
mysql> Set SQL_MODE = 'Traditional'; mysql> Insert into result(id, name, grade) values(101, 'Saurabh','abcd'); ERROR 1265 (01000): Data truncated for column 'Grade' at row 1
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短