Alg*_*thm 2 t-sql transactions sql-server-2008
我试图找到一个方法来执行后回滚事务.
例如:
DECLARE @tsubaki VARCHAR(25);
SET @tsubaki = 'A Transaction';
BEGIN TRANSACTION @tsubaki
UPDATE dbo.Maka SET id = 400, name = 'inu' --notice I didn't put there where clause
COMMIT TRANSACTION
Run Code Online (Sandbox Code Playgroud)
后来我意识到我更新了数据库Maka中的所有内容,而不仅仅是我最初想要的一条记录.
现在我尝试编写代码以在更新之前将其回滚:
DECLARE @tsubaki VARCHAR(25);
SET @tsubaki = 'A Transaction';
ROLLBACK TRANSACTION @tsubaki;
Run Code Online (Sandbox Code Playgroud)
不行.结论:我正在寻找一种方法,在提交事务并运行sql之后,在MS-SQL Server 2008中回滚sql事务.
提前致谢.
你不能从T-SQL代码那样做.您必须从日志文件恢复到某个时间点.请注意,还原会将所有内容"撤消"到某个时间点,包括您的事务.
在将来,您应该在任何手动更新之前备份数据库,无论大小.你也可以用一个小技巧来掩饰自己.写出你的更新/删除代码,如下所示:
SELECT * FROM dbo.Maka
-- UPDATE dbo.Maka SET id = 400, name = 'inu'
WHERE some_identifier = some_value
Run Code Online (Sandbox Code Playgroud)
首先运行SELECT版本,这是无害的,当您可以验证要更新的记录时,请选择WHERE子句中的代码直到UPDATE并运行它.