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约束检查产生错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥在MySQL数据库中建立检查约束不成功呢,语句是这样的

如何删除 mysql workbench 8.0 中的检查约束?

关于MySQL的检查约束不生效的问题

mysql的check约束问题···

MySQL FOREIGN KEY 约束语法

如何从我的 MySQL 表中删除约束?