Mysql ON UPDATE CURRENT_TIMESTAMP与触发器在更新后将时间设置为now()

时间:2019-03-28 13:17:07

标签: mysql database-trigger

在搜索其他内容时,我在测试数据库中找到了此触发器:

line = r"got less no of bytes than requested\r\n"
print(line)
if line.find(r'\r\n') > 0:
    print("Do not use line breaks in MSG");

我很困惑...这与将列定义更改为以下内容有什么不同吗?

begin
     set NEW.UpdatedAt = now();
end

我不愿意在触发器中做到这一点吗?

1 个答案:

答案 0 :(得分:1)

对于早期版本的MySQL,ON UPDATE仅可用于数据类型为TIMESTAMP的列。 DATETIME或任何其他数据类型均不支持该功能。

对于TIMESTAMP列,获取由两个TIMESTAMP列定义的表来自动设置可能有点棘手;在插入行时将NOW()分配给一列,而在更新行时将NOW()分配给另一列。

触发器可以解决这些限制。