作为家庭作业,我们必须编写一条同时执行多项操作的 SQL 语句。我会在这里发布
更改表 assn7 添加 gpa float 默认值 4.0 约束 gpacheck 检查(gpa >= 0.0 且 gpa <=4.0);
我想要做什么应该是显而易见的,但我收到了错误
错误 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在“CONSTRAINT gpacheck”附近使用的正确语法 检查(gpa >= 0.0 AND gpa <=4.0)' 在第 2 行
如果我去掉约束检查,它就会起作用,但我们需要它是一个大的 sql 语句。
最佳答案
您的查询语句有点错误。每 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它说
The
CHECK
clause is parsed but ignored by all storage engines.
替代方案是使用触发器(BEFORE INSERT TRIGGER
)
关于mysql 约束检查产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29266981/