SQLコマンド
1) BEGIN : トランザクションブロックを開始するhttp://www.postgresql.jp/document/9.3/html/sql-begin.html
2) COMMIT : 現在のトランザクションをコミットするhttp://www.postgresql.jp/document/9.3/html/sql-commit.html
3) ROLLBACK : 現在のトランザクションをアボートするhttp://www.postgresql.jp/document/9.3/html/sql-rollback.html
トランザクション中の切断後の動作
* トランザクションの途中でデータベースとの接続が切断されてしまった場合、 トランザクションはロールバックされる。http://itpro.nikkeibp.co.jp/article/COLUMN/20060328/233487/
http://server-helper.doorblog.jp/archives/5686942.html
トランザクション分離レベル
ANSI規格では... 1) READ UNCOMMITTED 2) READ COMMITTED ★PostgreSQLサポート★ 3) REPEATABLE READ 4) EPEATABLE READ ★PostgreSQLサポート★
トランザクションの望ましくない現象
a) ダーティーリード まだコミットされていないトランザクションが書き込んだデータを、別のトランザクションが読み込む現象。 b) ファジーリード あるトランザクションが以前に読み込んだデータをもう一度読み込んだときに、コミットされた別のトランザクションによってそのデータが変更または削除される現象。 c) ファントムリード あるトランザクションが検索条件を満たす一連の行を返却する問合せを2度実行する間に、コミットされた別のトランザクションによってその条件を満たす新しい行が挿入される現象。
分離レベルとの関係
分離レベル ダーティリード 反復不能読み取り ファントムリード --------------------------------+------------------+----------------- READ UNCOMMITTED あり あり あり READ COMMITTED なし あり あり REPEATABLE READ なし なし あり EPEATABLE READ なし なし なしhttp://www.postgresql.jp/document/9.3/html/transaction-iso.html
http://thinkit.co.jp/free/article/0603/10/3/
http://d.hatena.ne.jp/language_and_engineering/20110104/p1