当一个新行被添加到“租用设备日志”中,其中date\u returned的值为null时,我希望触发器将“数量”表中的数量减少1。
数据库的基本概要是有一个带列的设备表;型号、制造商、型号和数量(e、 g.1001,“Jackson”,“桨”,10)
表\u equipment \u log包含以下列:;成员id、型号、类型、获取日期、返回日期(e、 g.172256631001,oar,2018-11-26,2018-11-27)
因此,当一个成员取出一件设备但尚未归还时(date\u returned为空),同一型号的数量在表equipment中递减1。
但是我得到了一个语法错误。我看了其他类似的问题,仍然不能找出错误是什么。
触发因素如下:
delimiter //
CREATE TRIGGER UpdateQuantity
AFTER INSERT ON rented_equipment_log
FOR EACH ROW BEGIN
DECLARE q integer;
SELECT quantity INTO q FROM equipment WHERE model = NEW.model;
IF (date_returned IS NULL) THEN
UPDATE equipment
SET quantity = q -1 WHERE model = NEW.model
END IF;
END;//
这里有一个错误:#1064-您的sql语法有一个错误;检查与您的mysql服务器版本相对应的手册,以获得使用near'end if的正确语法;在第9行结束
1条答案
按热度按时间vd2z7a6w1#
我不知道你为什么会在那里出错。但你的问题比必要的更复杂:
我不确定
date_returned
应该是new.date_returned
或者e.date_returned
. 我甚至不明白那种情况。我会期待的e.equipment > 0
.