我有桌上的工作单:
我希望在updated_1
更新时,使用时间戳更新属性follow_up1
。
wt_id follow_up1 updated_1 follow_up2 updated_2
1 red 2017-08-24 09:50
但是,更新follow_up2
后,updated_1
中的值应保持不变,并且只更新updated_2
:
wt_id follow_up1 updated_1 follow_up2 updated_2
1 red 2017-08-24 09:50 blue 2017-08-24 10:50
这两个当前都设置为'ON UPDATE CURRENT_TIMESTAMP',并且当任何follow_up列更新时,updated_1
和updated_2
都会更新。有没有办法链接它们,以便它们只在更新另一个属性时更新?
答案 0 :(得分:0)
你可以在数据库端执行此操作的唯一方法是使用触发器,但我建议在应用程序代码中使用此逻辑,而不是在数据库中。只是因为保持清洁。应用程序逻辑应该保留在应用程序中。
如果你坚持,你可以用
来做DELIMITER $$
CREATE TRIGGER mytriggername BEFORE UPDATE ON mytablename
FOR EACH ROW
BEGIN
IF (OLD.follow_up1 <> NEW.follow_up1) THEN
SET NEW.updated_1 = NOW();
END IF;
/* and so on, same for the other column */
END $$
DELIMITER ;