DB

SQL Serverで自動コミットを無効にしてDDL文を実行してみた

SQL Serverの場合、自動コミットを無効にした状態でDDL文(CREATE TABLE文、DROP TABLE文等)を実行した後でコミットを実施しないと、更新内容が確定されない。

今回は、SQL Serverで、自動コミットを無効にした状態でDDL文を実行してみたので、その結果を共有する。

前提条件

下記記事の「前提条件」の内容が完了していること。

Spring BootでSQL Serverに接続しMyBatisを利用してみた今回は、Spring Bootアプリケーションで接続するデータベースをSQL Serverに変更してみたので、そのサンプルプログラムを共...

また、SSMSでログイン後「Tools」メニューから「Options」を選択し、「Query Execution」-「SQL Server」-「ANSI」を選択すると、以下の画面のように、自動コミットを無効にする「SET IMPLICIT_TRANSACTIONS」のチェックがONになっていること。
前提条件

CREATE TABLE文のロールバック/コミット

CREATE TABLE文を実行した後のロールバック/コミット後の結果は、以下の通り。

1) CREATE TABLE文を実行する。

create_table実行_1

2) 作成したtest_codeテーブルにデータを追加する。

create_table実行_2

3) ロールバックを実行する。

create_table実行_3

4) 以下のように、作成したtest_codeテーブルを確認すると、作成した「dbo.test_code」が存在しない旨のメッセージが表示される。

create_table実行_4

5) CREATE TABLE文を再度実行する。

create_table実行_5

6) 作成したtest_codeテーブルにデータを再度追加する。

create_table実行_6

7) コミットを実行する。

create_table実行_7

8) 以下のように、作成したtest_codeテーブルを確認すると、作成した「dbo.test_code」が存在し中身が確認できる。

create_table実行_8



「EaseUS Partition Master」はパーティション分割・結合・作成・サイズ変更等を直感的に行える便利ツールだったハードディスクの記憶領域を論理的に分割し、分割された個々の領域のことを、パーティションといいます。 例えば、以下の図の場合、C/D...

DROP TABLE文のロールバック/コミット

DROP TABLE文を実行した後のロールバック/コミット後の結果は、以下の通り。

1) DROP TABLE文を実行する。

drop_table実行_1

2) ロールバックを実行する。

drop_table実行_2

3) 以下のように、作成したtest_codeテーブルを確認すると、作成した「dbo.test_code」がまだ存在し中身が確認できる。

drop_table実行_3

4) DROP TABLE文を再度実行する。

drop_table実行_4

5) コミットを実行する。

drop_table実行_5

6) 以下のように、作成したtest_codeテーブルを確認すると、作成した「dbo.test_code」が削除されていることが確認できる。

drop_table実行_6

要点まとめ

  • SQL Serverの場合、自動コミットを無効にした状態でDDL文(CREATE TABLE文、DROP TABLE文等)を実行した後でコミットを実施しないと、更新内容が確定されない。