如果在SQL Server中回滚事务,是否会删除临时表(在事务中创建)?

3
在这个事务中,我创建了一些临时表并插入了一些数据。如果一切顺利,临时表将被删除,然后事务将被提交。如果有异常,连接将关闭。
我的问题是:在关闭连接之前,我是否必须回滚事务?还是只要连接关闭就可以了?
如果我回滚,我假设在事务中创建的临时表也会被删除(回滚),对吗?
谢谢
2个回答

4
临时表将在其作用域外被删除。
然而,当事务打开时失去连接会创建一个孤立的事务,它所持有的任何锁定将保持不变。
使用 SET XACT_ABORT 可以在遇到运行时错误后立即回滚任何事务。 http://msdn.microsoft.com/en-us/library/ms188792.aspx

1
为了更加清晰,如果你在C#中捕获并关闭连接,你是在异常外部关闭它,不会导致孤立状态。如果你的过程引发异常,可能会导致孤立状态。 - undefined
个人而言,我更喜欢使用TRY CAtCH块和特定的回滚操作,这样我就可以在回滚之后,在日志表中捕获错误和/或导致错误的数据。如果您的操作足够复杂,需要显式事务,那么您可能希望能够在出现问题时通过日志进行故障排除。 - undefined

2
临时表会在超出范围后立即删除。无论是否回滚,关闭连接都将其超出范围。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接