PostgreSQLの自動トランザクションをオフにしてキャンセルできるようにしたい
トランザクションの設定を変更する場合のためのメモです.
目次
はじめに
PostgreSQLではデフォルトで自動コミットモードがオンになっています.
このモードがオンになっていると,1文ごとに処理が確定されるため,各処理の開始文・終了文を書かずに済みます.
他方,このモードを解除することで,処理をまとめて行うことができるようになります.
処理の一部だけが確定されてしまうという事態を防ぐことができるようになります.
自動コミットモードを解除するには
自動コミットモードは次のコマンドにより解除されます.
\set AUTOCOMMIT off |
設定されているパラメータを確認したい場合は
\echo :AUTOCOMMIT |
とします.
コミットするトランザクションの構文
トランザクションは処理を確定または取り消しするまでの,開始〜終了で括られた1セットです.
自動コミットモードをオフにしたら,トランザクションを明示する必要があります.
まとめてコミットするトランザクションの構文は次の通りです.
BEGIN TRANSACTION; |
開始文はBEGIN TRANSACTION
,終了文はCOMMIT
です.
コミットするまでに行われた処理が,COMMIT
により確定されます.
自動コミットモードがオンだと,1つの文ごとにコミットされてしまいますが,BEGIN TRANSACTION
とCOMMIT
が不要となります.
トランザクションのキャンセル
処理を取り消すこともできます.
終了文としてCOMMIT
でなくROLLBACK
を使うことで,トランザクション中の処理が一括でキャンセルされます.
BEGIN TRANSACTION; |
参考文献
SQLの方言に配慮しつつ,リレーショナルデータベースの操作を一から説明している入門書です.
- ミック (2016)「SQL」第2版,翔泳社.