跟踪myql更改的最佳方法

时间:2017-10-20 20:55:58

标签: mysql sql foreign-keys primary-key

我正在使用MySQL workbench的EER工具为我正在开发的应用程序进行数据库设计。跟踪数据库中的数据更改非常重要,因此我正在关注this帖子,这使得接受的答案很有意义。我遇到的问题是我不太了解主键,所以我对这应该如何工作有点困惑,因为每次进行更改时都会有另一行插入相同的Id,因此DB不允许我是对的吗?我需要使用主键,因为外键。

1 个答案:

答案 0 :(得分:0)

(非常)伪代码中的常规“模式”:

  • 表A:a_id(PK),a_stuff
  • 表A_history:a_history_id(PK),a_id(FK引用A.a_id),valid_from,valid_to,a_stuff

触发A:

  • 插入时:使用valid_from = now和valid_to = null将值插入A_history。
  • 更新时:为a_id的最后一条历史记录设置valid_to = now;并使用更新的行值从“on insert”触发器执行相同的插入。
  • 关于删除:为a_id的最后一个历史记录设置valid_to = now。

在这种情况下,您使用“x> = from和x< to”查询历史记录( BETWEEN,因为前一条记录的“from”值应与下一条记录匹配“值“)。