这里我想在记录插入数据库之前创建2个CHECK约束。
ALTER TABLE SubjectEnrollment
ADD CONSTRAINT register CHECK (register <= classSize AND register >=0),
ADD CONSTRAINT available CHECK (available <= classSize AND available >= 0);
当我在MySql Workbench中键入此语法时,它会投诉&#34;语法错误:意外&#39;检查&#39; (检查)&#39 ;.我应该如何使用TRIGGER添加这些?
谢谢。
答案 0 :(得分: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
$$
您需要为UPDATE
s定义相同的触发器。
答案 1 :(得分:0)
评论有点长。
MySQL支持check
的语法,但在create table
:
create table (
. . .
CHECK (register <= classSize AND register >= 0)
);
Check
实际上并未在任何引擎中实现,因此不执行任何操作。据推测,它不是constraint
语法的一部分,因此不适用于add constraint
。