A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sunriselzz 中级黑马   /  2013-10-2 23:49  /  1990 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                    在使用mysql5.0的时候,发现不能识别check约束,也就是check约束没有生效?
          不知道是mysql5.0版本比较低的原因,还是mysq就不支持check约束,还是高版本的支持,5.0版本的不支持?
          而在创建表的时候,check约束在还是比较常用的一项约束, 如果是mysql都不支持的话,
          那么mysql中是有其它的的约束方式来实现对数据取值范围的约束么?
         
         
// mysqlcheck约束问题??
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, 下载次数: 49)

check约束问题.jpg

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

4 个回复

倒序浏览
MySQL不支持CHECK约束。
如果要达到完整的约束功能,需要借助于触发器

祝编程愉快!

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 麦子 于 2013-10-3 21:18 编辑

楼上正解
所有的存储引擎均对CHECK子句进行分析,但是忽略CHECK子句。”
The CHECK clause is parsed but ignored by all storage engines.

这儿说得很清楚啊。CHECK 不会报语法错,因为MYSQL对它进行了分析处理,但会被直接忽略

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
你将
  1. create table scores(
  2. id int primary key auto_increment,
  3. name varchar(30),
  4. score int ,
  5. check score >= 0 and score <=100

  6. )
复制代码
该为这样试试看
  1. create table scores(
  2.          id int primary key auto_increment,
  3.          name varchar(30),
  4.          score int ,
  5.          constraint ck check (score >= 0 and score <=100)
  6.          
  7. )
复制代码

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
如果问题已经解决,请重新编辑帖子,修改帖子的主题分类为“提问结束”{:soso_e181:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马