作者:男人要走火_293 | 来源:互联网 | 2020-08-20 00:51
mysql所有的存储引擎均不支持check约束,因此实现对数据约束有两种方法:1.在mysql种约束,如使用enum类型或者触发器等。2.在应用程序里面对数据进行检查再插入。
在数据库中,CHECK 约束是指约束表中某一个或者某些列中可接受的数据值或者数据格式(用于限制列中的值的范围)。
2.在应用程序里面对数据进行检查再插入。
使用 ENUM 限制插入的值,但是这种方式只能用于离散型数据,对于范围数据则无能为力
-- 创建一张测试表,规定sex字段只能是 ‘男’ 或者 ‘女’
CREATE TABLE `user` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(18) COLLATE utf8_estonian_ci NOT NULL,
`sex` ENUM('男','女') COLLATE utf8_estonian_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci
测试:
INSERT INTO `user`(`name`,`sex`) VALUES('秀吉','秀吉');
结果:
错误代码: 1265
Data truncated for column 'sex' at row 1
如果我们需要限制范围内数据,例如:余额只能大于100这样的条件,我们可以使用触发器来实现。
DELIMITER $$
CREATE
TRIGGER `test`.`remaining_BeforeInsert` BEFORE INSERT ON `test`.`user`
FOR EACH ROW BEGIN
IF `user`.`remaining` <100 THEN
SET `user`.`remaining` = 100;
END IF;
END$$
DELIMITER ;
以上就是MySQL怎么使用check约束的详细内容,更多请关注 第一PHP社区 其它相关文章!