黑马程序员技术交流社区
标题: mysql5.0中的check约束问题?? [打印本页]
作者: sunriselzz 时间: 2013-10-2 23:49
标题: mysql5.0中的check约束问题??
在使用mysql5.0的时候,发现不能识别check约束,也就是check约束没有生效?
不知道是mysql5.0版本比较低的原因,还是mysq就不支持check约束,还是高版本的支持,5.0版本的不支持?
而在创建表的时候,check约束在还是比较常用的一项约束, 如果是mysql都不支持的话,
那么mysql中是有其它的的约束方式来实现对数据取值范围的约束么?
// mysql中check约束问题??
create table scores(
idint primary key auto_increment,
namevarchar(30),
scoreint ,
checkscore >= 0 and score <=100
);
insert into scores values(null,'zhangsan',65),(null,'lisi',85);
insert into scoresvalues(null,'zhangsan',105);
insert into scoresvalues(null,'zhangsan',-10);
-
check约束问题.jpg
(44.7 KB, 下载次数: 50)
作者: 梦航 时间: 2013-10-3 09:32
MySQL不支持CHECK约束。
如果要达到完整的约束功能,需要借助于触发器
祝编程愉快!
作者: 麦子 时间: 2013-10-3 21:17
本帖最后由 麦子 于 2013-10-3 21:18 编辑
楼上正解
所有的存储引擎均对CHECK子句进行分析,但是忽略CHECK子句。”
The CHECK clause is parsed but ignored by all storage engines.
这儿说得很清楚啊。CHECK 不会报语法错,因为MYSQL对它进行了分析处理,但会被直接忽略
作者: 深情小建 时间: 2013-10-4 11:31
你将- create table scores(
- id int primary key auto_increment,
- name varchar(30),
- score int ,
- check score >= 0 and score <=100
- )
复制代码 该为这样试试看- create table scores(
- id int primary key auto_increment,
- name varchar(30),
- score int ,
- constraint ck check (score >= 0 and score <=100)
-
- )
复制代码
作者: 乔兵 时间: 2013-10-4 12:39
如果问题已经解决,请重新编辑帖子,修改帖子的主题分类为“提问结束”{:soso_e181:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |