Sql server 如何不在数据库中提交,而是选择修改后的数据

Sql server 如何不在数据库中提交,而是选择修改后的数据,sql-server,transactions,submit,read-uncommitted,Sql Server,Transactions,Submit,Read Uncommitted,我有一个包含多个表的数据库 用户可以更改表中的数据 我的问题是,在用户单击“保存”按钮之前,我不认为数据库中没有任何更改,甚至在用户单击“保存”按钮时,它也只提交他决定保存的表 但与此同时,用户必须能够看到他所做的所有更改。每一次选择都必须给他修改后的数据,而不是基础数据 如何一方面不提交数据库中的数据,另一方面向用户显示修改后的数据 我想做一个交易,不提交,并使用read uncommitted,但为此,我必须不关闭连接,如果我没有提交关闭-所有的更改被取消,我不会留下几个连接打开 我还想建立

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

用户可以更改表中的数据

我的问题是,在用户单击“保存”按钮之前,我不认为数据库中没有任何更改,甚至在用户单击“保存”按钮时,它也只提交他决定保存的表

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

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

我想做一个交易,不提交,并使用read uncommitted,但为此,我必须不关闭连接,如果我没有提交关闭-所有的更改被取消,我不会留下几个连接打开

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


谢谢

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

这将非常棘手,因为您坚持不能使用事务

我所能建议的最好方法是向每个表中添加列来表示状态——但即使这样,如何确保userA看到的是更改前的内容,userB看到的是帖子,但尚未提交,这将是一个棘手的问题

也许您可以考虑使用两个表,并根据需求从这两个表中选择相关数据

无论哪种方式,这都是一种令人讨厌的方式,而且没有很好的表现

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


如上所述,临时表在这里没有帮助,因为它与您声明将关闭的连接绑定。唯一可供选择的临时表解决方案是全局临时表,但这也会导致创建临时表的人出现问题,如果您是最后一个使用临时表的连接怎么办,请检查临时表是否存在等。

如果我可以使用tanscaction-grate完成工作,我没有坚持任何要求!但是怎么做呢?然后让连接保持打开状态,并在用户按下save时提交事务。如果他们退出,关闭事务,更改将回滚,应用程序中断连接也是如此。我想我不能让连接保持打开状态。因为没有足够的连接,它会崩溃。如果您建议它是更好的解决方案,我将尝试itSql支持32767个活动连接,具体取决于它的配置方式和内存量。这意味着我必须将所有表复制到内存中。不如果是的话,我不能使用太多的大数据