【PostgreSQL】PostgreSQL ~ トランザクション ~

【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