在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