【发布时间】:2014-12-21 03:36:22
【问题描述】:
我正在创建一个触发器以在我的签入表中完成插入但我的更新语句不起作用后执行
DELIMITER $$
DROP TRIGGER IF EXISTS checkins_AINS$$
CREATE TRIGGER `checkins_AINS` AFTER INSERT ON `checkins` FOR EACH ROW
BEGIN
DECLARE client_id INT;
DECLARE duplicate_record INTEGER DEFAULT 0;
DECLARE bpoints INT;
DECLARE business_id INT;
DECLARE CONTINUE HANDLER FOR 1062 SET duplicate_record = 1;
SELECT checkinPoints, id INTO bpoints, business_id FROM businesses WHERE id = new.venue_id;
INSERT INTO clients_checkins_summary(client_id, venue_id, first_checkin, last_checkin,visits)
VALUES(new.client_id, new.venue_id, new.createAt, new.createAt,1);
INSERT INTO clients_points_summary(client_id, business_id,current_points)
VALUES(new.client_id, business_id,bpoints);
IF duplicate_record = 1
THEN
UPDATE clients_checkins_summary
SET last_checkin = new.createAt,
visits = visits + 1
WHERE client_id = new.client_id and venue_id = new.venue_id;
UPDATE clients_points_summary
SET current_points = current_points + bpoints
WHERE client_id = new.client_id and business_id = business_id;
END IF;
END$$
DELIMITER ;
插入:
insert into checkins(client_id,venue_id,points,createAt,updateAt)
values (52,19,1,now(),now());
第一次工作正常,但是当更新的情况下,触发器正在进入 if 但没有更新值。
我将变量跟踪到一个表中,所有值都是正确的,但 update 并没有更新任何内容。
我错过了什么?
【问题讨论】:
-
为什么不使用
INSERT INTO ... VALUES(...) ON DUPLICATE KEY UPDATE ....?