创建BEFORE INSERT触发器时出现模棱两可的错误

我有一个Reservation表,并且正在创建一个BEFORE INSERT触发器,该触发器检查用户的预订是否已在数据库中,即防止他进行重复的预订。这样做是为了向前端发出信号,表明用户无法进行重复预订。

但是,mySQL引发此错误:ERROR 1064 (42000) at line 3: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5。由于某些原因,当BEGINEND之间的正文为空时,它不会引发错误。

CREATE TABLE reservation (
    customer_user_id integer,date integer,time integer,name varchar(100)
);

CREATE TRIGGER trigger_name
BEFORE INSERT -- error raised in this line
ON reservation FOR EACH ROW
BEGIN
    DeclARE sum INT;

    SELECT COUNT(*) 
    INTO sum 
    FROM reservation r
    WHERE (r.customer_user_id = new.customer_user_id)
    AND (r.date = new.date)
    AND (r.time = new.time);

    IF sum = 0 THEN
        INSERT INTO reservation values (new.customer_user_id,new.date,new.time,new.name);
    ELSE 
        RAISE NOTICE 'duplicate'
    END IF;
END; 

此外,此触发器是否可能是对表Reservation的约束?例如。 (customer_user_id,date,time) UNIQUE的种类,可以防止添加重复项,但是我对如何“通知”前端一无所知,而前端又提示用户他们不能添加重复项。 很抱歉,如果代码的某些部分可能很奇怪,我是SQL的新手,并曾教过pSQL。

谢谢!

yndllhm 回答:创建BEFORE INSERT触发器时出现模棱两可的错误

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3166349.html

大家都在问