黑马程序员技术交流社区

标题: 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中是有其它的的约束方式来实现对数据取值范围的约束么?
         
         
// 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, 下载次数: 55)

check约束问题.jpg

作者: 梦航    时间: 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
你将
  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. )
复制代码

作者: 乔兵    时间: 2013-10-4 12:39
如果问题已经解决,请重新编辑帖子,修改帖子的主题分类为“提问结束”{:soso_e181:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2