トランザクションの設定を変更する場合のためのメモです.

目次

  1. はじめに
  2. 自動コミットモードを解除するには
  3. コミットするトランザクションの構文
  4. トランザクションのキャンセル
  5. 参考文献

はじめに

PostgreSQLではデフォルトで自動コミットモードがオンになっています.
このモードがオンになっていると,1文ごとに処理が確定されるため,各処理の開始文・終了文を書かずに済みます.

他方,このモードを解除することで,処理をまとめて行うことができるようになります.

処理の一部だけが確定されてしまうという事態を防ぐことができるようになります.

自動コミットモードを解除するには

自動コミットモードは次のコマンドにより解除されます.

\set AUTOCOMMIT off

設定されているパラメータを確認したい場合は

\echo :AUTOCOMMIT

とします.

コミットするトランザクションの構文

トランザクションは処理を確定または取り消しするまでの,開始〜終了で括られた1セットです.
自動コミットモードをオフにしたら,トランザクションを明示する必要があります.

まとめてコミットするトランザクションの構文は次の通りです.

BEGIN TRANSACTION;
/*
データの登録・削除・更新
*/
COMMIT;

開始文はBEGIN TRANSACTION,終了文はCOMMITです.
コミットするまでに行われた処理が,COMMITにより確定されます.

自動コミットモードがオンだと,1つの文ごとにコミットされてしまいますが,BEGIN TRANSACTIONCOMMITが不要となります.

トランザクションのキャンセル

処理を取り消すこともできます.
終了文としてCOMMITでなくROLLBACKを使うことで,トランザクション中の処理が一括でキャンセルされます.

BEGIN TRANSACTION;
/*
データの登録・削除・更新
*/
ROLLBACK;

参考文献

SQLの方言に配慮しつつ,リレーショナルデータベースの操作を一から説明している入門書です.

  • ミック (2016)「SQL」第2版,翔泳社.