所以,我和我的朋友就使用before trigger或on update current\ timestamp来更新 updated_at
列。正如名称所说,该列的目的只是存储行最后一次更新的时间。
他为同一事件设置了触发器 BEFORE
```
BEGIN
set NEW.updated_at := current_timestamp();
END
我认为我们应该在updatecurrent\u timestamp上使用这个属性,因为这是mysql提供的默认触发器 `AFTER` 事件。
我试图在文档中搜索性能差异,但什么也没找到。有什么帮助吗?
1条答案
按热度按时间k4ymrczo1#
毫无疑问
ON UPDATE CURRENT_TIMESTAMP
这种方法比触发器更快(特别是在重载情况下),因为它更简单。您当然可以将其视为默认触发器,但它实际上已内置到数据库的更新代码中。dbms中的执行路径不需要任何特殊的逻辑来处理事务,而触发器需要。时间戳更新与任何其他更新同时发生;既不在它之前,也不在它之后。如果回滚更新(事务性地),则时间戳更改将与其余更改的列一起回滚
对于未来的程序员来说,理解表也稍微容易一些,因为他们只需查看列定义,而不必知道触发器(但这是一个见仁见智的问题。)
但是,还有更重要的设计决策需要讨论(也是一个意见问题。)