mysql表中性别字段用了int类型,想加check约束

检查是无用的对于所有存储引擎,CHECK子句都会被解析但被忽略。
请参见第13.1.5节“CREATETABLE语法”。
接受这些子句但省略它们的原因是为了提高兼容性,并使从其他SQL服务器导入代码并运行应用程序以创建参考数据表变得更容易。
请参见第1.8.5节“MySQL和标准SQL之间的差异”。
-------------摘自mysql5.1手册第13.1.5章至于限制,可以从接收中取出数据,完全可以通过添加drop-来控制。
页面上的下拉菜单性别项是只需给男性和女性方法两个选项,-------------------------------------------------------------那么我在前台取数据的时候该用什么方法呢?如果是varchar类型,我可以使用getString,而对于int,这个类型应该使用什么?答:int和String都可以

关于MySQL的检查约束不生效的问题

使用checkMySQL时,在表中插入不满足约束条件的数据行时,可以成功插入,不会出错!OK

返回

当我执行完任何一条语句后,person表类型在插入和修改时都会严格验证数据是否正确!已写入,不会听到错误

MySQLcheck约束怎么不起作用

我现在要讲的是在表定义之前标准化的用于列级过滤的CHECK约束。
(MySQL版本>=8.0.16)

createtablef1(r1intconstrainttb_f1_r1_chk1check(mod(r1,3)=0));

QueryOK,0rowsaffected(0.03sec)

创建表f2(r1intconstrainttb_f2_r1_chk1check(mod(r1,3)=0)notenforced);

QueryOK,0rowsaffected(0.02sec)

这里CHECK约束的相关限制如下:

1.约束名称在每个数据库中都是唯一的。

也就是说,单个数据库中不存在两个相同的约束。
如果没有定义这些,系统会自动生成一个唯一的约束名称。

2.检查限制对insert/update/replace/loaddata/loadxml语句生效;它对于相应的忽略语句失败。

3.并非所有功能都可以使用,例如B.具有不确定结果的函数:NOW()、CONNECTION_ID()、CURRENT_USER()。

4.不适用于存储过程和存储函数。

5.系统变量不适用。

6.子查询不适用。

7.外键操作(例如ONUPDATE、ONDELETE)不适用。

8.enforced默认启用。
如果单独添加notenforced,检查约束无效。