【1】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
【2】トランザクション中の切断後の動作
* トランザクションの途中でデータベースとの接続が 切断されてしまった場合、トランザクションはロールバックされる。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060328/233487/
http://server-helper.doorblog.jp/archives/5686942.html
【3】トランザクション分離レベル
ANSI規格では... ~~~~~~~~~~~~~~~~~ 1) READ UNCOMMITTED 2) READ COMMITTED ★PostgreSQLサポート★ 3) REPEATABLE READ 4) EPEATABLE READ ★PostgreSQLサポート★ ~~~~~~~~~~~~~~~~~
1)トランザクションの望ましくない現象
a) ダーティーリード
まだコミットされていないトランザクションが書き込んだデータを、 別のトランザクションが読み込む現象。
b) ファジーリード
あるトランザクションが以前に読み込んだデータを もう一度読み込んだときに、コミットされた別のトランザクションによって そのデータが変更または削除される現象。
c) ファントムリード
あるトランザクションが検索条件を満たす一連の行を 返却する問合せを2度実行する間に、コミットされた 別のトランザクションによってその条件を満たす新しい行が挿入される現象。
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
関連記事
PostgreSQL ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2014/03/08/000100
【DB】トランザクション / Transaction
https://dk521123.hatenablog.com/entry/2010/07/06/011843