【发布时间】:2014-02-01 03:05:54
【问题描述】:
我的任务是为 Oracle 11g 数据库创建历史表。我在这篇文章What is the best way to keep changes history to database fields?的第一个答案中提出了非常类似于基于记录的解决方案@
然后我的老板建议,由于某些表是聚集的,即表 1 中的一些数据与表 2 相关(认为这是表在规范化之前的格式),他希望在那里是在此集群级别的所有表之间维护的版本号。生成版本号的建议方法是使用 SYS_GUID http://docs.oracle.com/cd/B12037_01/server.101/b10759/functions153.htm。
我考虑过使用触发器来执行此操作,因此当其中一个表更新时,其他表的版本号随后会更新,但我可以看到一些问题,例如:
- 如何停止一个表的触发器,然后触发另一个表的触发器?(我们最终会在这里永远调用触发器)
- 如何停止竞争条件? (即表1和表2同时更新时,如何知道哪个是最新的版本号?)
我是 Oracle 数据库开发的新手,所以关于这是否是一个好主意/是否有更好的方法来做这件事的一些建议会很棒。
【问题讨论】:
标签: sql database oracle oracle11g