mysql约束检查产生错误

时间:2015-03-25 21:34:56

标签: mysql constraints

对于家庭作业,我们必须制作一个sql语句,它同时做了很多事情。我会在这里发布

ALTER TABLE assn7 ADD gpa float DEFAULT 4.0 CONSTRAINT gpacheck 检查(gpa> = 0.0 AND gpa< = 4.0);

我应该做的很明显,但是我收到了错误

错误1064(42000):您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在'CONSTRAINT gpacheck附近使用正确的语法 在第2行检查(gpa> = 0.0 AND gpa< = 4.0)'

如果我取出约束检查它会起作用但我们需要它是一个大的sql语句。

2 个答案:

答案 0 :(得分:1)

你的查询语句有点不对劲。每 MySQL manual它应该是

ALTER TABLE assn7 ADD gpa float DEFAULT 4.0;
ALTER TABLE assn7 ADD CONSTRAINT gpacheck check(gpa >= 0.0 AND gpa <=4.0);

您不能同时将列和约束相加。

虽然要指出; MySQL中没有Check约束支持。按manual表示

  

CHECK子句被解析但被所有存储引擎忽略。

替代方案是选择触发器(BEFORE INSERT TRIGGER

答案 1 :(得分:0)

检查MySQL中的约束don't work,但是你可以通过添加这样的逗号在一行中实现你的语句:

ALTER TABLE assn7 ADD gpa float DEFAULT 4.0, ADD CONSTRAINT gpacheck check(gpa >= 0.0 AND gpa <=4.0);