mysql check 约束无效
- 在MYSQL中,CHECK只是一段可调用但无意义的子句。MySQL会直接忽略。
- 接受这些子句但又忽略子句的原因是为了提高兼容性,以便更容易地从其它SQL服务器中导入代码,并运行应用程序,创建带参考数据的表。
- 如果需要设置CHECK约束的字段,比较容易列举全部的值,就可以考虑将该字段的类型设置为枚举类型 enum()或集合类型set()。比如性别字段可以这样设置,可以插入枚举值方式。
CREATE TABLE person( id INT null, sex enum('男','女') );
此时输入信息:
INSERT INTO person VALUES (14,'男');
如果输入不符合要求信息则报错:
INSERT INTO person VALUES (15,'中');
- 如果需要设置CHECK约束的字段是区间,列举全部值比较困难,比如:1-100之间的值,那就只能使用触发器来代替约束实现数据的有效性了。
新手,如有疑问请留言,勿喷谢谢