トランザクションの特徴としては、トランザクションの開始と終了の間の処理は処理は行うが確定せず、トランザクション間の一連の処理の確定or取消をまとめて行うことです。
ここで注意が必要となるのは、DBによってトランザクションの開始や含まれるSQL文が異なります。
私が使用するのはpostgresqlで、DDL文(create tableなど)の処理です。
DML文(insert,update,dereteなど)はどのDBをでもできそうだが、DDL文は?となったので、調べてみました。
・postgresql→DDL文はトランザクションに含まれる
・Oracle →DDL文はトランザクションに含まれない
DBによって、自動でトランザクションが開始されるものもあったりしますが、
postgresqlの場合、「BIGIN」コマンドを利用しなけれなトランザクションは開始されません。
また、トランザクションの終了はコミットやロールバック処理がかかるのが基本ではあるが、
コミットやロールバックをせずにDBとの接続を切断すると、トランザクションは終了します。
その際にコミットがかかるかロールバックされるかも使用するDBによって異なる。
postgresqlは、暗黙コミットは行わず、トランザクションの途中でDBとの接続が切断された場合、ロールバックがかかる。
複数のDBにまたがる処理のトランザクションでつまづいた編はこちら