在MySQL中,我希望在除了一列更新之外的所有列上更新时触发一个触发器。
在我的表格行中,我有40列。我希望触发器在update_time
字段以外的任何字段发生更新时更新列update_time
。
CREATE TRIGGER `UpdateDateTrigger`
BEFORE UPDATE ON `users`
FOR EACH ROW
IF NOT UPDATE(`update_time`) BEGIN
SET new.update_timestamp = now()
END
但它没有按预期工作。
答案 0 :(得分:0)
我建议您不要使用触发器功能,而是建议您明智地创建表,以便在与该行关联的更改内容时自动更新update_time字段。
请查看documentation here,以便每次更新行时按时自动更新。创建语法简单有效。
CREATE TABLE t1 (
// .... Other columns
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
如果您希望对每个列进行特定控制,那么编写触发器是我认为最好的主意。请check the answer在这里。
答案 1 :(得分:0)
通过查看MySQL automatic update for specific column instead of whole record,我得到了在触发器
中排除两列更新的解决方案IF !((NEW.last_visited <> OLD.last_visited) ||
(NEW.update_time <> OLD.update_time)) THEN
SET new.update_time = now();
END IF
谢谢!