在Mysql里面,CHECK子句会被分析,但是会被忽略,“CREATE TABLE语法”。接受这些子句但又忽略子句的原因是为了提高兼容性,以便更容易地从其它SQL服务器中导入代码,并运行应用程序,创建带参考数据的表。
alter table a add check (score>=0 and score <=100)
insert into a(name,subject,score) value('h','s',-1)
-- 无效
alter table c change sex sex ENUM(1,2)
-- 有效
如果涉及到范围判断,最好使用触发器
create TRIGGER mytrigger before insert on a for EACH row
BEGIN
if new.score<0 THEN
set new.score=0;
end if;
if new.score>100 then
set new.score=100;
end if;
END