mysql - 创建 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
. 由于某种原因,当 and 之间的主体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。
提前致谢!
解决方案
推荐阅读
- abap - 具有动态可见性的选择屏幕中的单选按钮运行时错误
- docker - 完成 docker run 后无法运行 localhost
- angular - Angular 6-*ngFor 与自定义排序和分页 - 如何应用
- ios - 如何通过单击添加按钮和在同一视图控制器中创建的删除按钮来添加和删除视图控制器中的段?
- java - 增强的 for 循环似乎同时遍历所有元素。但它应该是还是我的代码错了?
- c# - 如何将原始 json 值存储在 Cookie 对象中?
- python - pandas groupby 并按不同因素聚合
- jquery - 动态添加+删除div中的可排序div
- google-maps - 想创建谷歌地图图层
- python - os.system 路径中有空格