mysql图形界面建表,如何才能添加check约束?例如给sex添加“男”、“女”和“保密”。
4条回答 默认 最新
- 狂龙骄子 2022-08-21 18:03关注
根据多年使用MySQL经验,不建议使用 枚举类,至少我接触过的几个大项目没有见过。
建议统一在 应用层进行校验,减少不必要的 数据库I/O开支。
另外,字段定义为枚举类,也有一定的局限性,使用 汉字 和 0~9 的数字 有很大不同,枚举字段类型中如果使用0,则会赋 null 值。
CREATE TABLE `tmp_user_detail_t`( `id` BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增长主键', `user_name` VARCHAR(100) NOT NULL COMMENT '姓名', `sex1` ENUM('男','女','秘密') NOT NULL COMMENT '性别', `sex2` ENUM('1','2','3') NOT NULL COMMENT '性别(0:女、1:男、2:秘密)', `sex3` VARCHAR(4) NOT NULL COMMENT '性别(女、男、秘密)', `sex4` TINYINT NOT NULL COMMENT '性别(0:女、1:男、2:秘密)', PRIMARY KEY (`id`) USING BTREE ) COMMENT='用户信息基表' COLLATE='utf8mb4_general_ci' ENGINE=InnoDB ROW_FORMAT=DYNAMIC AUTO_INCREMENT=1 ; INSERT INTO `tmp_user_detail_t`(user_name, sex1, sex2, sex3, sex4) VALUES("小王", '女', '1', '男', 1); INSERT INTO `tmp_user_detail_t`(user_name, sex1, sex2, sex3, sex4) VALUES("小王", '男', '2', '男', 2); INSERT INTO `tmp_user_detail_t`(user_name, sex1, sex2, sex3, sex4) VALUES("小王", '秘密', '3', '男', 3); -- 插入失败:SQL错误(1265):Data truncated for column 'sex2' at row 1 INSERT INTO `tmp_user_detail_t`(user_name, sex1, sex2, sex3, sex4) VALUES("小王", '未知', '3', '男', 3); INSERT INTO `tmp_user_detail_t`(user_name, sex1, sex2, sex3, sex4) VALUES("小王", '男', '1', '男', 1); INSERT INTO `tmp_user_detail_t`(user_name, sex1, sex2, sex3, sex4) VALUES("小王", '男', '2', '男', 2); INSERT INTO `tmp_user_detail_t`(user_name, sex1, sex2, sex3, sex4) VALUES("小王", '男', '3', '男', 3); -- 插入成功,但 sex2 为 null INSERT INTO `tmp_user_detail_t`(user_name, sex1, sex2, sex3, sex4) VALUES("小王", '男', '0', '男', 2); -- 插入失败:SQL错误(1265):Data truncated for column 'sex2' at row 1 INSERT INTO `tmp_user_detail_t`(user_name, sex1, sex2, sex3, sex4) VALUES("小王", '男', '4', '男', 2); INSERT INTO `tmp_user_detail_t`(user_name, sex1, sex2, sex3, sex4) VALUES("小王", '男', '2', '女', 1); INSERT INTO `tmp_user_detail_t`(user_name, sex1, sex2, sex3, sex4) VALUES("小王", '男', '2', '男', 2); INSERT INTO `tmp_user_detail_t`(user_name, sex1, sex2, sex3, sex4) VALUES("小王", '男', '2', '秘密', 3); INSERT INTO `tmp_user_detail_t`(user_name, sex1, sex2, sex3, sex4) VALUES("小王", '男', '2', '未知', 3);
2、对于MySQL 8.0.15之前的版本,不支持CHECK约束
马克社区,马克吐温社区,马克java社区MySQL 8.0 新特性之检查约束(CHECK); mysql check 检查约束 mysql 8.0 新特性 马克社区,马克吐温社区,马克java社区MySQL 8.0 新特性之检查约束(CHECK); mysql check 检查约束 mysql 8.0 新特性 http://www.mark-to-win.com/tutorial/51585.html3、如果一定要在MySQL服务端校验,可使用 trigger 触发器
MySQL CHECK约束功能如何实现_Mr.路痴的博客-CSDN博客_mysqlcheck约束怎么写 CHECK 检查约束在我们使用 MySQL 插入数据时,假如我们插入性别,就只能插入‘男’、‘女’,或者插入数据控制在一定范围内,我们都会使用 CHECK 检查约束来实现。问题:MySQL 所有的存储引擎都不支持 CHECK 约束,MySQL中可以写 CHECK 约束,但会忽略它的作用,因此 CHECK 并不起作用,因此实现对数据约束有两种方法:在 MySQL 种约束,如使用 ENUM ... https://blog.csdn.net/weixin_43054397/article/details/93020765本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
- ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
- ¥16 mybatis的代理对象无法通过@Autowired装填
- ¥15 可见光定位matlab仿真
- ¥15 arduino 四自由度机械臂
- ¥15 wordpress 产品图片 GIF 没法显示
- ¥15 求三国群英传pl国战时间的修改方法
- ¥15 matlab代码代写,需写出详细代码,代价私
- ¥15 ROS系统搭建请教(跨境电商用途)