mysql约束检查产生错误
Posted
技术标签:
【中文标题】mysql约束检查产生错误【英文标题】:mysql constraint check produces error 【发布时间】:2015-03-25 21:34:55 【问题描述】:对于家庭作业,我们必须制作一个同时执行很多事情的 sql 语句。我这里发一下
ALTER TABLE assn7 ADD gpa float DEFAULT 4.0 约束 gpacheck 检查(gpa >= 0.0 AND gpa
我想要做什么应该很明显,但我得到一个错误
ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 mysql 服务器版本相对应的手册,以获取在 'CONSTRAINT gpacheck 附近使用的正确语法 在第 2 行检查(gpa >= 0.0 AND gpa
如果我取出约束检查它会起作用,但我们需要它是一个大的 sql 语句。
【问题讨论】:
【参考方案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
)
【讨论】:
【参考方案2】:在 MySQL 中检查约束don't work,但您可以通过添加这样的逗号在一行中实现您的语句:
ALTER TABLE assn7 ADD gpa float DEFAULT 4.0, ADD CONSTRAINT gpacheck check(gpa >= 0.0 AND gpa <=4.0);
【讨论】:
以上是关于mysql约束检查产生错误的主要内容,如果未能解决你的问题,请参考以下文章