このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ
*目次 [#ted28046]

#contents


*トランザクション管理 [#p5e85926]

-[[RDBMS]]は1つ1つの[[SQL]]を処理するだけなので、SQLの実行に失敗したときにどこまで戻すのかがわからない。どこまで戻すのかを指定するのは、SQLを発行するアプリケーション側の役割である。このために、SQLにはcommit,rollback(abort)などのトランザクションを表現する命令が用意されている。
-SQLを発行するアプリケーション側の事故により、commitあるいはrollbackのどちらも発行していないトランザクションが発生してしまうことがある。
--この場合は、RDBMSが未完のトランザクションを検出した時点で、強制的にrollbackを実行する。

*トランザクション管理用の命令 [#ked07dc2]

**rollback(abort) [#x50cf2d6]

-トランザクションの途中で異常が起こり、処理が完了できなかったことをRDBMSに通知する。
-RDBMS側はこの通知を受け取ると、DBの状態をトランザクションの開始時点まで巻き戻し、処理が何もなかったように見せる。

**commit [#s806ad65]

-トランザクションが正常に完了したことを通知する。
-commitが発行したトランザクションの結果は、どのようなことがあっても失ってはならない。

**begin [#nc71bc82]

-rollbackやcommitを発行すると、その後新しいトランザクションを開始する。
-アプリケーションが最初にRDBMSに接続した時点で新しいトランザクションが始まることもある。
-RDBMSによっては明示的にトランザクションを始めるためにbeginを用意していることもある。
--[[PostgreSQL]]など

*参考文献 [#x0610a9b]

-『RDBMS解剖学』