创建记录历史记录表 - 如何在创建时创建记录?

时间:2016-07-25 13:33:30

标签: oracle

对于一个项目,我希望我的记录有一个“历史”表。这个(示例)系统有两个表:

RECORDS
    ID
    NAME
    CREATE_DATE

RECORDS_HISTORY
    ID
    RECORDS_ID
    LOG_DATE
    LOG_TYPE
    MESSAGE

当我将记录插入RECORDS时,如何在RECORDS_HISTORY中自动创建关联条目,其中RECORDS_ID等于{{1}中新插入的ID }}?

我目前在RECORDS的{​​{1}}上有一个序列,以便在插入新行时自动增加,但我不确定如何在ID中预填充看起来像这适用于每个新创建的(未更新的)记录。

RECORDS

如何在创建时创建此关联的RECORDS_HISTORY记录?

1 个答案:

答案 0 :(得分:0)

您没有提及您正在使用的数据库。我假设它的Oracle。最明显的答案是:使用" On Insert Trigger"。您甚至可以从插入语句中将ID(序列)返回到表RECORDS中。这个解决方案的缺点:触发器有点"隐藏"代码,可以减慢大量插入的进程,并且在存储部分冗余的数据时消耗双磁盘空间。如果RECORDS被更新或删除怎么办?这可能会发生吗?你还必须照顾它吗?最大的问题是:你的目标是什么? 有证明的历史概念。看看这个:https://en.wikipedia.org/wiki/Slowly_changing_dimension