1

我有一个包含多个表的数据库

用户可以更改表中的数据。

我的问题是,在用户单击“保存”按钮之前,我不会在数据库中进行任何更改,即使他这样做了 - 它只提交他决定保存的表

但与此同时,用户必须能够看到他所做的所有更改。并且每个“选择”都必须给他修改后的数据,而不是基础数据。

我如何一方面不提交数据库中的数据,另一方面向用户显示修改的数据?

我想进行交易而不提交,(并使用未提交的读取)但为此我不能关闭连接(如果我在没有提交的情况下关闭 - 所有更改都被取消)而且我不会留下几个的连接打开。

我还想建立一个所有更改的列表,并且每当用户进行选择时 - 首先从列表中搜索。但它很复杂,我更喜欢简单的解决方案

谢谢

4

2 回答 2

0

您可以使用临时表来存储临时数据,然后在需要时移动它们。

于 2015-09-18T12:20:51.060 回答
0

这将很难处理,因为您坚持不能使用事务。

我能建议的最好的方法是在每个表中添加列来表示状态 - 但即使那样,你如何确保用户A 看到的是预更改,而用户B 看到的是帖子但尚未提交,这将是一件棘手的事情。

也许您可以查看使用两个表并根据需要从两个表中选择相关数据的视图。

无论哪种方式,这都是一种令人讨厌的方式,而且性能也不是很好。

你坚持不能使用交易的那一刻,就是你剥夺了任何简单答案的机会的那一刻。

临时表在这里没有帮助(如上所述),因为它与您声明关闭的连接相关联。唯一的替代临时表解决方案是全局临时表,但这也会导致问题(谁创建它,如果你是使用它的最后一个连接怎么办,检查它是否存在等)

于 2015-09-18T12:22:34.407 回答