2014-05-01 62 views
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,但它不断抛出我下面的错误:MySQL的触发语法

ERROR 1064(42000):你在你的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以找到在''错误信息'附近使用的正确语法; END IF; end'at line 5

我的错误是什么?

回答

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了解更多详情。