2012-01-13 50 views
0

之前,我有这两个表:MySQL的触发

CREATE TABLE `reservation` (
    `id_reservation` int(11) PRIMARY KEY, 
    `reserved_date` date NOT NULL, 
    `id_event` int(11) NOT NULL, 
    FOREIGN KEY (`id_event`) REFERENCES `event` 
    ) 

    CREATE TABLE `event` (
    `id_event` int(11) PRIMARY KEY, 
    `begin_date` date NOT NULL, 
    `end_date` date NOT NULL, 
    ) 

基本上我插入reservation具有单reserved_datereservationevent有关,其具有begin_dateend_date

我需要检查reserved_date包含(Y < = X < = Z)在begin_date和该特定eventend_date

回答

0

试试这个触发器 -

CREATE TRIGGER trigger1 
    BEFORE INSERT 
    ON reservation 
    FOR EACH ROW 
BEGIN 
    DECLARE id_event_var INT DEFAULT NULL; 
    SELECT id_event INTO id_event_var FROM `event` WHERE id_event = new.id_event AND new.reserved_date >= begin_date AND new.reserved_date <= end_date; 
    IF id_event_var IS NULL THEN 
    ... -- wrong date! 
    END IF; 
END 
+0

它返回第6行 什么样的声明做我后写的“IF id_event_var为null,则”错误#1064? – Dave 2012-01-14 13:26:34

+0

在这里写你的代码。例如,你可能会抛出一个错误,例如:'CALL unlnown_function();' – Devart 2012-01-16 08:42:55

+0

好吧,让我们想想为这个错误提出反馈意见,例如我想打印出来:“对不起,你不能”。我该怎么做? – Dave 2012-01-18 17:18:48