首页 > 解决方案 > 触发器 - 如何在更新另一列时更改另一列 - MySQL

问题描述

TIME我得到了一个用例,如果其他相同类型的字段发生变化,用户需要更新某个字段。

我得到了两列

horario_arribo (时间)

horario_salida (时间)

现在,我需要做的是以下

制作一个触发器,因此当我更改例如horario_arribo时,horario_salidahorario_arribo减去 1 小时的时间相同,如果我更新horario_salida,则使horario_arribo加上 1 小时。

我一直在想怎么做,首先检查要更新的值是否为horario_salida,然后我只需将 1 小时添加到horario_arribo,或者如果我正在更新horario_arribo,与horario_salida相同,但减去 1 小时。

DELIMITER //
CREATE TRIGGER modificar_horarioruta AFTER
UPDATE ON ruta
FOR EACH ROW
BEGIN
IF(new.horario_salida) THEN
  SET AddTime(old.horario_arribo, '00:60:00')
ELSE
  SET AddTime(old.horario_salida, Here I dont know how to minus 1 hour to that)
END IF;
END //
DELIMITER ;

这是我拥有的数据

在此处输入图像描述

所以,简而言之,如果我更新horario_salidahorario_arribo需要提前 1 小时,如果我更新horario_arribohorario_salida需要少 1 小时。

谢谢

标签: mysqltriggersmysql-workbench

解决方案


国际大学联盟:

DELIMITER //
CREATE TRIGGER modificar_horarioruta AFTER
UPDATE ON ruta
FOR EACH ROW
BEGIN
IF (NEW.horario_salida) THEN
  SET NEW.horario_arribo = OLD.horario_arribo + 1;
ELSE
  SET NEW.horario_salida = OLD.horario_salida - 1;
END IF;
END //
DELIMITER ;

让我知道这是否不是您需要的。


推荐阅读