28

我的问题很简单,但在创建此交易后我仍然怀疑。如果我执行以下代码:

BEGIN TRANSACTION
      DROP TABLE Table_Name

我可以执行恢复删除表的 ROLLBACK TRANSACTION 吗?我问是因为我不知道“对象资源管理器”中会发生什么,而且我没有发现任何关于这个主题的问题,所以我认为这可能是一个有用的问题。

4

3 回答 3

25

这非常容易测试。

create table TransactionTest
(
    ID int identity primary key clustered,
    SomeValue varchar(20)
)

insert TransactionTest
select 'Here is a row'

begin transaction
    drop table TransactionTest
rollback transaction

select * from TransactionTest
于 2014-07-18T14:31:38.593 回答
24

DROP TABLE可以回滚并且不会自动提交。

于 2014-07-18T14:21:52.663 回答
3

我只想补充一点,我在 Oracle 11g、Mysql 5.7 和 MSSQL 2016 中尝试过。它只在 MSSQL RDBMS 中回滚(工作)。我希望大多数其他 RDBMS 不会支持它,因为它执行模式更改。

ORACLE PL/SQL EX:

savepoint mysave;
DROP TABLE test_table;
ROLLBACK TO mysave;
select * from test_table;
于 2016-12-13T05:26:02.837 回答