====== トランザクションで使用できるステートメント ======  以下のステートメント以外はトランザクションでロールバックすることが可能である。 |ALTER DATABASE |DROP DATABASE |ALTER FULLTEXT CATALOG |DROP FULLTEXT CATALOG |ALTER FULLTEXT INDEX |DROP FULLTEXT INDEX | |BACKUP |RECONFIGURE |CREATE DATABASE |RESTORE |CREATE FULLTEXT CATALOG |UPDATE STATISTICS | |CREATE FULLTEXT INDEX | ||||| \\ DROP TABLE がロールバック可能であることを実験してみる。 PRINT '***** テーブル作成 *****' CREATE TABLE drop_tran_test( col1 char(2) NULL, col2 char(3) NULL ) PRINT '***** テーブル存在確認 *****' SELECT name, object_id FROM sys.objects WHERE object_id = OBJECT_ID('drop_tran_test') PRINT '***** トランザクション開始 *****' BEGIN TRAN PRINT '***** テーブル削除 *****' DROP TABLE drop_tran_test PRINT '***** テーブル存在確認 *****' SELECT name, object_id FROM sys.objects WHERE object_id = OBJECT_ID('drop_tran_test') PRINT '***** ロールバック *****' ROLLBACK TRAN PRINT '***** テーブル存在確認 *****' SELECT name, object_id FROM sys.objects WHERE object_id = OBJECT_ID('drop_tran_test') PRINT '***** 終了処理 *****' DROP TABLE drop_tran_test \\ 以下は実行結果である。 ***** テーブル作成 ***** ***** テーブル存在確認 ***** name object_id -------------- ----------- drop_tran_test 69575286 (1 行処理されました) ***** トランザクション開始 ***** ***** テーブル削除 ***** ***** テーブル存在確認 ***** name object_id --------------- ----------- (0 行処理されました) ***** ロールバック ***** ***** テーブル存在確認 ***** name object_id --------------- ----------- drop_tran_test 69575286 (1 行処理されました) ***** 終了処理 ***** 参考文献: [[http://msdn.microsoft.com/ja-jp/library/ms191544.aspx|トランザクションで使用できる Transact-SQL ステートメント]] - MSDN