在 MSSQL 中,根据我的实验,可以在事务中使用 TRUNCATE,但同时,根据文档,没有提及它是如何工作的以及 DELETE 之间有什么区别。我知道 TRUNCATE 只将删除的行数记录到事务日志中,但是它如何恢复 ROLLBACK 上的数据呢?对于任何经过验证的信息,我将不胜感激。
在 MSSQL 中,根据我的实验,可以在事务中使用 TRUNCATE,但同时,根据文档,没有提及它是如何工作的以及 DELETE 之间有什么区别。我知道 TRUNCATE 只将删除的行数记录到事务日志中,但是它如何恢复 ROLLBACK 上的数据呢?对于任何经过验证的信息,我将不胜感激。
DELETE 既可以在事务中也可以在事务日志中回滚(关闭事务之后),因为 对于每个已删除的行,都会有一个带有其值的条目。
TRUNCATE 只能在事务中回滚。考虑表(或者更确切地说它的块 - 范围)被标记为删除,但在事务打开时尚未被物理删除。
您可以在此处阅读更多详细信息和示例。