在提交事务到SQL Server之前,使用c#备份原始行数据
本文关键字:备份 原始 数据 使用 提交事务 SQL Server 之前 | 更新日期: 2023-09-27 18:08:49
我希望能够备份表中已被修改或删除的行的所有原始数据。我还想记录所有插入的行。这样做的原因是我的应用程序将有一个用户对数据库进行更改,并且我不想在用户确认所有更改都是正确之前提交更改。
我该怎么做呢?我看了一下TransactionScope和Transaction类,但是如果程序要对100个不同的表进行100次更新该怎么办呢?如果我的理解是正确的,那么我将需要100个不同的线程,直到用户确认更改是正确的?我在搜索提交和回滚事务时遇到了这个问题。
帮助:(
如果你在等待用户输入,你不应该让交易一直打开。事务更适合处理数据库内部的低级回滚或来自管理数据库操作的。net代码的回滚。
如果正在等待用户输入,则将临时数据存储在另一个表中,直到得到用户的确认,然后将数据移动到最终位置。
当您想要跟踪所有更改的行时,您的问题不是关于Transaction。事务是为了在两个命令之间发生错误时保持数据库的完整性。我认为你需要一个撤消/重做历史模型。
您可以通过使用额外的表来解决这个问题。一个表用于保存所有更改,另一个表用于指向已批准的更改版本。对于产品表,它可能是这样的:
Products Table
RowId | ProductId | ProductName | Description | Price | ChangingTime
ApprovedProducts Table
ProductId | RowId
当用户更新产品时,您可以在Products
表中添加新行,并且可以将RowId
指向ApprovedProducts
表中所需的行。
我认为你应该留给数据库去做,你可以在插入、更新和删除上写一个触发器,并保存新数据和旧数据。不建议在前端这样做,触发器很容易并且可移植到任何数据库引擎。
认为,