我有一个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
。由于某些原因,当BEGIN
和END
之间的正文为空时,它不会引发错误。
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。
谢谢!