mySQL 中触发和手动插入的 ram 过程有何不同

What is different in ram process of trigger and manual insert in mySQL

对于 事务性 数据库,哪种方式更适合在 table 中保存数据访问日志? 在 table 中使用触发器还是使用手动插入? 手动就是写sqlQuery插入程序日志到table.

这种审计主要是通过触发器完成的。主要原因是:

  • 开发人员不会忘记调用它,因为如果需要触发单独的插入,就会发生这种情况
  • 一个简单的错误不会导致第二次插入失败并使之前的操作未被审计
  • 审计不能被故意遗漏,它实际上是由数据库的所有者控制的
  • 第二次插入所需要的额外网络往返+查询解析可不是小事。对于基本操作,这些 的实际时间成本 很重要。

另一方面,此解决方案的唯一缺点是现在在数据库端的额外逻辑。默认情况下,开发人员倾向于在数据库中保留尽可能少的逻辑(这通常是个好主意),但在这种情况下,我认为这不是一个有效的论点。这 不是 业务逻辑,它是您的数据库的有机组成部分。关于"who accessed and what data"的数据仍然是数据,属于数据库。