众所周知,MySQL所有的存储引擎均不支持check约束,MySQL会对check子句进行分析,但是在插入数据时会忽略,因此check并不起作用。那么,我们想要给性别添加约束,使其只能填入"男"和"女",应该如何解决?
我们可以使用枚举ENUM的方法进行约束:
CREATE TABLE `reader` (
`readerid` INT(11) NOT NULL AUTO_INCREMENT COMMENT '读者编号',
`type` INT(11) NOT NULL COMMENT '读者类型编号',
`name` CHAR(20) NOT NULL COMMENT '读者姓名',
`age` INT(11) DEFAULT NULL COMMENT '年龄',
`sex` ENUM('男','女') DEFAULT NULL COMMENT '性别',
`phone` CHAR(11) DEFAULT NULL COMMENT '联系电话',
`dept` VARCHAR(20) DEFAULT NULL COMMENT '所在系部',
`regdate` DATE DEFAULT NULL COMMENT '注册日期',
PRIMARY KEY (`readerid`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
如上述代码,当我们添加性别sex时只能从"男"和"女"之间进行选择。