因此,我和我的朋友在使用BEFORE触发器或ON UPDATE CURRENT_TIMESTAMP用于表以更新updated_at
列的值方面存在争论。顾名思义,该列的目的只是存储上次更新行的时间。
他为此设置了一个触发器-
活动-BEFORE
BEGIN
set NEW.updated_at := current_timestamp();
END
我认为我们应该使用ON UPDATE CURRENT_TIMESTAMP属性,因为这是MySQL为AFTER
事件提供的默认触发器。
我尝试搜索文档中的性能差异,但没有发现任何问题。 有什么帮助吗?
答案 0 :(得分:1)
毫无疑问,ON UPDATE CURRENT_TIMESTAMP
方法比触发器更快(尤其是在高负载下),因为它更简单。您当然可以将其视为默认触发器,但实际上它内置于数据库的UPDATE代码中。 DBMS中的执行路径不需要任何特殊的逻辑来处理事务,而触发器则需要。
时间戳更新与任何其他更新同时发生;无论是之前还是之后。如果更新(以事务方式)回滚,则时间戳记更改会与其余已更改的列一起回滚
对于将来的程序员来说,理解表也稍微容易一些,因为他们可以查看列定义,而不必知道触发器。 (但这是一个见解的问题。)
但是,还有更多重要的设计决策需要争论。 (也是一个问题。)