【问题标题】:Triggers - How to change another column when one is updated - MySQL触发器 - 如何在更新另一列时更改另一列 - MySQL
【发布时间】:2019-10-13 03:54:10
【问题描述】:

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

我得到了两列

horario_arribo(时间)

horario_salida (TIME)

现在,我需要做的是以下

制作一个触发器,所以当我更改例如 horario_arribo 时,horario_salidahorario_arribo 的 TIME 减去 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_arribo horario_salida 需要减少 1 小时。

谢谢

【问题讨论】:

    标签: mysql triggers mysql-workbench


    【解决方案1】:

    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 ;
    

    如果这不是您需要的,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-31
      • 2017-11-08
      • 1970-01-01
      • 2012-04-20
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      相关资源
      最近更新 更多