截断表中的事务(Truncate Table Within Transaction)

2019-07-21 00:52发布

在SQL可以“截断表”命令在事务内使用吗? 我创建一个应用程序,我的表有一吨的记录。 我想删除所有记录,但如果应用程序失败,我是我的回滚事务。 删除每一条记录需要很长的时间。 我想知道如果我用截断表,我还可以回滚事务,让我回的数据在发生故障的情况下。 我认识到,truncate table不写每个删除事务日志,但我想知道,如果它写入页面重新分配到日志,以便回滚工作。

Answer 1:

在SQL Server中,你可以从回滚事务的TRUNCATE。 它写页面重新分配到日志中,你提到。



Answer 2:

在Oracle,截断表是不能在一个事务(或,更准确地,不能被回滚)中使用的DDL语句。 据我所知,如果执行该语句时,有一个交易正在进行中,事务被提交,然后执行TRUNCATE,不能撤消。

在Informix中,TRUNCATE的行为略有不同; 你可以在一个事务中使用TRUNCATE,但只允许语句后有COMMIT和ROLLBACK。

其他DBMS可能有truncate table的行为自身的特质诠释。



文章来源: Truncate Table Within Transaction