首页 文章

MySQL触发语法

提问于
浏览
1
CREATE TABLE reservation(
    reserv_id int,
    reserv_date numeric(8,0),
    start_date numeric(8,0) NOT NULL,
    end_date numeric(8,0) NOT NULL,
    payment ENUM('Cash','Credit Card','Check'),
    PRIMARY KEY(reserv_id),
    CHECK (reserv_date<start_date),
    CHECK (start_date<end_date)
)ENGINE=InnoDB;


delimiter //
create trigger date_check
before insert on reservation
for each row
begin
   IF ((new.reserv_date > new.start_date) or (new.start_date > new.end_date)) THEN SIGNAL 'error message';
   END IF;
end;//
delimiter ;

我试图在MySQL中创建此触发器,但它不断抛出以下错误:

错误1064(42000):您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在“错误消息”附近使用正确的语法;万一;在第5行结束

我的错是什么?

1 回答

  • 1
    IF ((new.reserv_date > new.start_date) or (new.start_date > new.end_date)) THEN 
        SIGNAL SQLSTATE '45000' 
        SET MESSAGE_TEXT = 'error message';
    

    阅读documentation了解更多详情 .

相关问题