首页 > 解决方案 > 在 Mysql 中触发执行时更新数据?

问题描述

如果数据更新,我希望 WaterRateMeterStart 和 WaterRateMeterEnd 按顺序具有相同的值。

在此处输入图像描述

这是我的桌子

在此处输入图像描述

这是我的表结构

在此处输入图像描述

这是我的代码,我不知道如何发生错误。

DELIMITER $$
CREATE TRIGGER after_update_rates_water_again AFTER UPDATE ON waterrates FOR EACH ROW
BEGIN
    IF
        new.WaterRateMeterStart <> old.WaterRateMeterStart THEN
            UPDATE waterrates 
            SET WaterRateMeterEnd = new.WaterRateMeterStart 
        WHERE
            WaterRateId = ( new.WaterRateId - 1 );

        ELSEIF new.WaterRateMeterEnd <> old.WaterRateMeterEnd THEN
        UPDATE waterrates 
        SET WaterRateMeterStart = new.WaterRateMeterEnd 
        WHERE
            WaterRateId = ( new.WaterRateId + 1 );

    END IF;

END $$
DELIMITER ;

如果我更新数据会出错

UPDATE `waterrates` SET `WaterRateMeterStart` = '9' WHERE `waterrates`.`WaterRateId` = 2

在此处输入图像描述

标签: mysqldatabase-trigger

解决方案


推荐阅读