8

如何在不使用事务的情况下回滚删除命令?如果我们不能,那么 Truncate 和 delete 有什么区别?

4

3 回答 3

4

在这种情况下您不能回滚,但是当您使用完全恢复模式时,您可以将数据库恢复到发出删除命令之前的那一刻。

于 2015-07-03T21:34:48.677 回答
2

当且仅当它们是尚未提交的事务的一部分时,您可以回滚 DELETE 或 TRUNCATE(以及大多数其他操作)。或者,您可以从备份中恢复已删除/截断的数据。

TRUNCATE 和 DELETE 之间有几个不同之处。最值得注意的是 TRUNCATE 只能清空一个表,而 DELETE 只删除您指定的行。TRUNCATE 在页级别而不是行级别取消分配和记录数据,这通常使 TRUNCATE 比 DELETE 更有效地删除表的全部内容。

于 2013-04-04T21:13:12.477 回答
2

没有事务就不能ROLLBACK进行操作。您可能可以使用隐式事务,但您仍然需要调用COMMITROLLBACK显式。但是,为了更好地控制,最好还是将语句包装在一个BEGIN TRANSACTION...COMMIT / ROLLBACK块中。这样您就可以避免任何混淆和使用该IMPLICIT_TRANSACTION设置的需要。

于 2013-03-18T09:13:46.817 回答