在实际开发过程中,当在mysql建表时对于字段进行check进行设置:
create table tmp_tset(
status varchar(20) check(age in ('S','F'))
);
在执行insert语句时,范围之外的值实际上还是可以插入的
insert into tmp_test values('C');
在搜索相关文章后,提示check实际上并没有起到效果。
因该字段需要的枚举值较少,因此可以考虑用set()进行替换
修改后:
create table tmp_test(
status set('S','F')
);
再次插入:
insert into tmp_test values('C');
提示:
SQL错误[1265][01000]: Data truncated for column ‘status’ at row 1
范围之外的值无法插入,说明约束成功起效。