Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 恢复对数据库的更改_Sql_Sql Server - Fatal编程技术网

Sql 恢复对数据库的更改

Sql 恢复对数据库的更改,sql,sql-server,Sql,Sql Server,我有一个问题,用户可能需要将两个父实体合并在一起,将所有子实体合并到一个父实体中,这一部分很容易,但是如果需要,我还需要恢复这些更改 比如说, 假设我有一个John和一个Dave,他们都有两个资产,我想把Dave的资产转移给John,只需将Dave的资产“OwnerKid”换成John的ID即可 到目前为止,共有两个表Person,Asset,链接包含在Asset表中 我想知道SQL中是否有任何东西可以跟踪此更改,并在需要时将其还原回来。我也知道约翰也可能把他的资产给其他人,如果我们想把事情恢复

我有一个问题,用户可能需要将两个父实体合并在一起,将所有子实体合并到一个父实体中,这一部分很容易,但是如果需要,我还需要恢复这些更改

比如说,

假设我有一个John和一个Dave,他们都有两个资产,我想把Dave的资产转移给John,只需将Dave的资产“OwnerKid”换成John的ID即可

到目前为止,共有两个表
Person
Asset
,链接包含在Asset表中

我想知道SQL中是否有任何东西可以跟踪此更改,并在需要时将其还原回来。我也知道约翰也可能把他的资产给其他人,如果我们想把事情恢复原状,这会使事情变得复杂


还有什么事情要处理吗?

欢迎来到精彩的交易世界!在SQL中(假设MSSQL,因为未指定任何内容),可以使用命令
begintransaction
启动事务。然后,有两个关闭事务的选项:您可以
提交事务
回滚事务
<代码>提交将更改保存到数据库中,
回滚
还原事务期间所做的任何更改


对事务进行一些研究,我很确定你会找到你想要的。

你在谈论哪个数据库管理系统?感谢所有的修改哈哈,我该如何应用它们:)嗯……除非你是说你想做更改,否则,做一系列验证,然后可能回滚。在这种情况下,您需要在进行更改之前进行数据库备份,然后在需要时进行恢复。此事务会持续几天吗?。。。。。。。。我给出的例子只是一个例子,但假设我们将一堆记录转移给另一个人,一天后我们决定将它们放回原处(假设此后没有发生任何交易)这可能吗?@kalimo这是一个非常活跃的数据库,如果这不是全部,我们需要恢复一组特定的数据DB@PaulS事务可以保持打开状态数天,但在
COMMIT
ed之前,更改不会在数据库中持久存在。在这一点上,我们也开始考虑一些可能的锁定问题。事务仅适用于在出现问题时希望立即恢复的情况。对于您尝试执行的操作,它更像是将表数据导出(例如,转换为CSV),然后将该数据转换为“填充”脚本。或者,在数据库中创建一个备份表,您可以加入该表以执行与当前更新相反的操作。然而,我开始变得有点远了,而且有点像黑客。