我设计了数据库表(标准化,在 MS SQL 服务器上),并为一个应用程序创建了一个独立的 Windows 前端,少数用户将使用它来添加和编辑信息。我们将添加一个 Web 界面,以便以后在我们的生产区域进行搜索。
我担心如果两个用户开始编辑相同的记录,那么最后提交更新的用户将是“赢家”,重要信息可能会丢失。我想到了许多解决方案,但我不确定我是否会造成更大的头痛。
- 什么都不做,希望两个用户永远不会同时编辑同一个记录。- 可能永远不会发生,但如果发生了怎么办?
- 编辑例程可以存储原始数据的副本以及更新,然后在用户完成编辑时进行比较。如果它们不同,则显示用户和确认更新- 需要存储两份数据。
- 添加最后更新的 DATETIME 列并在我们更新时检查它是否匹配,如果不匹配则显示差异。- 需要在每个相关表中添加新列。
- 创建一个编辑表,在用户开始编辑将要检查的记录时注册并防止其他用户编辑同一记录。- 需要仔细考虑程序流程以防止死锁和记录在用户崩溃程序时被锁定。
有没有更好的解决方案,还是我应该选择其中之一?