我在使用 MySQL 时遇到检查约束不起作用的问题......这是我输入的查询:
create table courses(cid int(5) primary key,no_s int(2) check(no_s>=0 AND no_s<=5));
这样每门课程最多有 5 名学生(只是一个例子)。但是当我输入以下查询时:
insert into courses values(1,7);
MySQL接受查询并执行它,尽管我指定检查0到5之间的数字。 在Google中快速搜索,我发现它可能与MySQL模式有关,但无法使其工作。您还需要知道我正在使用带有MySQL 2.5的Wamp服务器5.6.17。
MySQL目前不支持检查约束。
它接受输入,但忽略它们。
您可以使用触发器在某些条件下取消插入/更新,例如
delimiter //
CREATE TRIGGER check_trigger BEFORE UPDATE ON your_table
FOR EACH ROW
BEGIN
IF (NEW.no_s not between 0 and 5) THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'check failed';
END IF;
END
//
delimiter ;