SQL Server:事务中的“DROP TABLE”会导致隐式提交吗?

时间:2014-07-18 14:12:12

标签: sql transactions drop-table

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

BEGIN TRANSACTION
      DROP TABLE Table_Name

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

3 个答案:

答案 0 :(得分:17)

这非常容易测试。

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

答案 1 :(得分:14)

DROP TABLE可以回滚,但不会自动提交。

答案 2 :(得分:2)

我只是想补充说我在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;