触发器-更新时如何更改另一列-MySQL

时间:2019-05-27 14:51:04

标签: mysql triggers mysql-workbench

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

我被分为两列

horario_arribo(时间)

horario_salida(时间)

现在,我需要做的是跟进

进行触发,以便在例如更改 horario_arribo 时, horario_salida horario_arribo 的时间相同,减去1小时,如果我更新 horario_salida ,使 horario_arribo 加1小时。

我一直在考虑如何做,首先检查要更新的值是否是 horario_salida ,然后我在 horario_arribo 上加上1小时,或者正在将 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 ;

这是我的数据

enter image description here

因此,简而言之,如果我更新 horario_salida ,则 horario_arribo 需要提前1小时,如果我更新 horario_arribo horario_salida 需要减少1小时。

谢谢

1 个答案:

答案 0 :(得分:0)

IIUC:

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 ;

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