如何在不使用事务的情况下回滚删除命令?如果我们不能,那么Truncate& amp;删除?
答案 0 :(得分:3)
在这种情况下您无法回滚,但在使用完整恢复模型时,您可以将数据库恢复到发出删除命令之前的那一刻。
答案 1 :(得分:2)
没有交易,您无法ROLLBACK
进行操作。您可以使用implicit transactions,但仍需要明确调用COMMIT
或ROLLBACK
。但是,为了更好地控制,最好将语句包装在BEGIN TRANSACTION...COMMIT / ROLLBACK
块中。这样您就可以避免任何混淆,并且需要使用IMPLICIT_TRANSACTION
设置。
答案 2 :(得分:2)
当且仅当它们是尚未提交的事务的一部分时,您才可以回滚DELETE或TRUNCATE(以及大多数其他操作)。或者,您可以从备份中恢复已删除/截断的数据。
TRUNCATE和DELETE之间存在一些差异。最值得注意的是TRUNCATE只能清空一个表,而DELETE只删除你指定的行。 TRUNCATE在页面级别而不是行级别释放和记录数据,这通常使TRUNCATE比DELETE更有效地删除表格的整个内容。