对于一个项目,我希望有一个“历史”表来记录我的记录。对于这个(示例)系统,我有两个表:
RECORDS
ID
NAME
CREATE_DATE
RECORDS_HISTORY
ID
RECORDS_ID
LOG_DATE
LOG_TYPE
MESSAGE当我在RECORDS中插入一条记录时,如何在RECORDS_HISTORY中自动创建一个关联条目,其中RECORDS_ID等于RECORDS中新插入的ID
我目前在RECORDS中的ID上有一个序列,可以在插入新行时自动递增,但是我不确定如何在RECORDS_HISTORY中为每个新创建(未更新)的记录预先填充如下所示的记录。
INSERT INTO RECORDS_HISTORY (RECORDS_ID, LOG_DATE, LOG_TYPE, MESSAGE) VALUES (<records.id>, sysdate(), 'CREATED', 'Record created')如何在创建时创建此关联的_HISTORY记录?
发布于 2016-07-25 23:07:24
你没有提到你正在使用的数据库。我猜是先知吧。最明显的答案是:使用"On Insert触发器“。您甚至可以从insert语句中将ID (序列)返回到表记录中。这种解决方案的缺点:触发器是某种“隐藏”代码,可以减慢大量插入的处理速度,并且在存储部分冗余的数据时消耗双倍磁盘空间。如果记录被更新或删除了怎么办?这种情况会发生吗?你是否也需要注意这一点?最大的问题是:你的目标是什么?有经过验证的历史化概念。看看这个:https://en.wikipedia.org/wiki/Slowly_changing_dimension
https://stackoverflow.com/questions/38569194
复制相似问题