【问题标题】:Update in mysql trigger not workingmysql触发器中的更新不起作用
【发布时间】: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 ....

标签: mysql sql triggers


【解决方案1】:

我错过了什么吗?

可能是这样

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-22
    • 2019-01-17
    • 2012-09-04
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多