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