触发器 - 如何在更新另一列时更改另一列 - MySQL
Posted
技术标签:
【中文标题】触发器 - 如何在更新另一列时更改另一列 - MySQL【英文标题】:Triggers - How to change another column when one is updated - MySQL 【发布时间】:2019-10-13 03:54:10 【问题描述】:我得到了一个用例,如果其他相同类型的字段发生变化,用户需要更新某个 TIME
字段。
我得到了两列
horario_arribo(时间)
horario_salida (TIME)
现在,我需要做的是以下
制作一个触发器,所以当我更改例如 horario_arribo 时,horario_salida 与 horario_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_salida,horario_arribo 需要提前 1 小时,如果我更新 horario_arribo, horario_salida 需要减少 1 小时。
谢谢
【问题讨论】:
【参考方案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 ;
如果这不是您需要的,请告诉我。
【讨论】:
以上是关于触发器 - 如何在更新另一列时更改另一列 - MySQL的主要内容,如果未能解决你的问题,请参考以下文章
当您需要基于另一列更新列时,在 Pandas 中循环的替代方法