gpt4 book ai didi

mysql - mysql触发器中的更新不起作用

转载 作者:行者123 更新时间:2023-11-30 22:52:54 25 4
gpt4 key购买 nike

我正在创建一个触发器,以便在插入到我的 checkin 表中后执行,但我的更新语句不起作用

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 但不更新值。

我将变量追踪到一个表中,所有值都是正确的,但更新没有更新任何内容。

我错过了什么?

最佳答案

am I missing something?

可能是这个

UPDATE clients_points_summary
SET current_points = current_points + bpoints
WHERE client_id = new.client_id and business_id = business_id;

这里的问题是您的局部变量 business_id 和列名 clients_points_summary.business_id 不明确。您可以按如下方式消除歧义:

UPDATE clients_points_summary cps
SET cps.current_points = cps.current_points + bpoints
WHERE cps.client_id = new.client_id and cps.business_id = business_id;

关于mysql - mysql触发器中的更新不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27583181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com