我的问题很简单但我在创建此交易后仍然怀疑。如果我执行以下代码:
BEGIN TRANSACTION
DROP TABLE Table_Name
我可以执行恢复已删除表的ROLLBACK TRANSACTION吗?我问的是因为我不知道对象资源管理器中发生了什么?'我没有发现任何关于这个主题的问题,所以我认为这可能是一个有用的问题。
答案 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;