web-dev-qa-db-ja.com

SQL Server:トランザクション内の「DROP TABLE」は暗黙的なコミットを引き起こしますか?

私の質問は簡単なものですが、このトランザクションを作成した後、私はまだ疑っています。次のコードを実行すると:

BEGIN TRANSACTION
      DROP TABLE Table_Name

削除されたテーブルを回復するROLLBACK TRANSACTIONを実行できますか? 「オブジェクトエクスプローラー」で何が発生するのかわからず、このトピックに関する質問が見つからなかったので、私は質問しています。これは、有用な問題である可能性があると思います。

22
Mauro Bilotti

DROP TABLEはロールバックでき、自動コミットされません。

18
usr

これは非常に簡単にテストできます。

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
20
Sean Lange

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;
2
jacvalle