MySql工作台CHECK约束

hel*_*234 5 mysql check-constraints mysql-workbench

这里我想在记录插入数据库之前创建2个CHECK约束.

ALTER TABLE SubjectEnrollment
ADD CONSTRAINT register CHECK (register <= classSize AND register >=0),
ADD CONSTRAINT available CHECK (available <= classSize AND available >= 0);
Run Code Online (Sandbox Code Playgroud)
  1. register属性不应超过classSize属性且小于0.
  2. available属性不应超过classSize属性且小于0.

当我在MySql Workbench中键入此语法时,它会抛出"语法错误:意外'检查'(检查)'.我应该如何使用TRIGGER添加这些?

谢谢.

jue*_*n d 5

由于MySQL不支持check,你需要一个触发器.像这样的CREATE触发器:

delimiter $$
CREATE TRIGGER some_trigger_name
BEFORE INSERT ON SubjectEnrollment
FOR EACH ROW
BEGIN    
    IF (NEW.register > NEW.classSize OR NEW.register < 0)        
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'invalid data';
    END IF;
END
$$
Run Code Online (Sandbox Code Playgroud)

您需要为UPDATEs 定义相同的触发器.