|
|
1
3
您可以对要跟踪的每个记录使用修订方法。这将涉及为记录的每次修订保留表中的一行。这些记录将通过共享的“ID”绑定在一起,并可在“修订状态”上查询(例如,获取最新的“批准”记录)。
在应用层中,只要记录了所有必要的信息,就可以单独处理这些记录,并在需要时回滚到早期状态。
|
|
|
2
3
Patterns for things that change with time . 仍然是模式,而不是实际的框架,但他展示了示例数据以及如何使用它。 |
|
|
3
1
帐户中的任何错误条目都应保留在那里以备记录。将对该账户应用相等和相反的更正交易。实际上,回滚原始事务,但留下非常明显的原始错误及其更正痕迹。 |
|
|
4
1
我将采用双时态数据库设计,它将为您提供执行和回滚所需的所有数据,无论这意味着插入更多行还是简单地删除以后的修改。 这样的数据库设计有相当多的微妙之处,但有很多关于这个主题的好书:
可在此处下载: http://www.cs.arizona.edu/people/rts/tdbbook.pdf 使用数据库事务将是一个坏主意,因为它将在数据库中创建锁-基本上数据库事务应该尽可能短。
|
|
|
5
0
根据您对James Anderson的评论,我会让用户界面在取消交易时编写一个新的插入。它将向表中插入一条新记录,该记录的值与被取消的事务的值相同,只是该值将是负数而不是正数。如果你有一个结构,其中包含了一些定义交易目的的东西,我会让它说是取消的,以及它正在取消的交易的记录号。 |
|
|
6
0
根据各种意见,您的问题可能的解决方案是制作一个“日期有效”表。
有效起始日期为今天、有效截止日期为“2999-12-31”的新行复制旧行中的所有列(如果未更改)。 可以使用创建视图 这将允许所有当前查询保持不变。 这是数据仓库环境中的一种非常常见的技术,对于生效日期很重要的汇率之类的东西来说也是如此。 撤销逻辑应该是显而易见的。 |
|
|
7
0
虽然我在使用触发器和行版本之前设置了完整的撤消/审核历史记录,但我不知道有什么特定的模式。
我在MS SQL 2000中使用了一个名为Log Navigator的工具,该工具可以让我撤销一个特定的历史事务,但现在找不到它。 http://www.lumigent.com 和 http://www.apexsql.com 您可以使用查看日志的工具,但我认为这两种工具都不能让您回滚日志。
|
|
|
blogger13 · 视频租赁店数据库的规范化 1 年前 |
|
|
ì¤ì¤í · 为什么LEFT INNER JOIN被弃用? 1 年前 |
|
|
relatively_random · 确保两个表之间一致的共同参考 1 年前 |
|
|
Grenish Rai · Firestore错误“用户文档不存在” 2 年前 |
|
|
Saijo-Shi · PLpgsql中的更新触发器 2 年前 |
|
Dante · Django::配置不当:池不支持持久连接 2 年前 |
|
YouLocalRUser · 删除重复行,保留第一行 2 年前 |