1.はじめに

OracleのDBを使う事があるのだが、CREATE文を流す時に『あれっ?COMMITって必要ないの』となったので調べた事をメモ。

2.なぜ『あれっ?』てなったか

個人的にSELECT以外のDBの状態を変化させるような作業は全てCOMMITが必要と考えていた。
INSERT → COMMIT。DELETE → COMMIT。CREATE → Non COMMIT。
テーブル作成時にコミットしていないことに気づき、『結果にコミットしなくて良いのか?』となった。

3.DDL文は『暗黙コミット』

CREATE文などのデータ定義言語(DDL)文は、明示的にコミットしなくても暗黙的にコミットされるとのこと。
その他、SQL*PlusをEXITかQUITコマンドで終了した場合にも暗黙コミットされるとのこと。

<参考>
https://www.shift-the-oracle.com/transaction/commit.html
http://oraclemasterdb.seesaa.net/article/96566762.html

DDL例

 ・CREATE文 (CREATE TABLE,CREATE SEQUENCE,CREATE SYNONYM)
 ・ALTER文 (ALTER TABLE,ALTER USER)
 ・DROP文 (DROP TABLE,DROP SEQUENCE,DROP VIEW)
 ・TRUNCATE文
 ・RENAME文

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.