カテゴリ: PostgreSQL 更新日: 2026/01/30

PostgreSQLのトランザクション完全入門!BEGIN・COMMIT・ROLLBACKを初心者向けにやさしく解説

PostgreSQLでBEGIN/COMMIT/ROLLBACKを使う方法
PostgreSQLでBEGIN/COMMIT/ROLLBACKを使う方法

先生と生徒の会話形式で理解しよう

生徒

「PostgreSQLを勉強していたら、BEGINとかCOMMITとかROLLBACKって言葉が出てきました。何をしているんですか?」

先生

「それはトランザクションと呼ばれる仕組みです。いくつかの作業をまとめて、安全に実行するための約束事だと思ってください。」

生徒

「パソコンをほとんど触ったことがなくても理解できますか?」

先生

「大丈夫です。買い物やメモ帳の例を使いながら、一つずつ説明していきます。」

1. PostgreSQLのトランザクションとは何か?

1. PostgreSQLのトランザクションとは何か?
1. PostgreSQLのトランザクションとは何か?

PostgreSQLのトランザクションとは、「いくつかのSQL操作を、ひとまとまりの作業として扱う仕組み」です。 たとえば、銀行でお金を振り込むときは「引き出す」「振り込む」という二つの作業があります。 どちらか一方だけが成功してしまうと困りますよね。 トランザクションは、このような失敗を防ぐために使われます。

PostgreSQLでは、BEGINで作業を開始し、COMMITで確定、ROLLBACKで取り消しを行います。 これにより、データベースの中身を安全に守ることができます。

2. サンプルで使うテーブルの中身

2. サンプルで使うテーブルの中身
2. サンプルで使うテーブルの中身

ここでは、会員情報を管理するテーブルを例にします。 データベースのテーブルは、紙の名簿のようなものだと考えてください。


id | name       | age | email
---+------------+-----+-------------------
1  | 山田太郎   | 25  | taro@example.com
2  | 佐藤花子   | 19  | hanako@example.com
3  | 鈴木一郎   | 30  | ichiro@example.com
4  | 高橋次郎   | 22  | jiro@example.com

3. BEGINでトランザクションを開始する

3. BEGINでトランザクションを開始する
3. BEGINでトランザクションを開始する

BEGINは、「ここからまとめて作業を始めます」という合図です。 メモ帳で言えば、下書きを始めるようなイメージです。 この時点では、変更はまだ確定していません。


BEGIN;

UPDATE users
SET age = age + 1
WHERE id = 1;

このSQLでは、idが1の人の年齢を1つ増やしています。 ただし、まだCOMMITしていないので、正式には保存されていない状態です。

4. COMMITで変更を確定する

4. COMMITで変更を確定する
4. COMMITで変更を確定する

COMMITは、「今までの作業を正式に保存します」という命令です。 ノートにペンで清書するような感覚で覚えてください。 COMMITを実行すると、変更内容はデータベースにしっかり保存されます。


COMMIT;

COMMIT後のテーブルの状態は次のようになります。


id | name       | age | email
---+------------+-----+-------------------
1  | 山田太郎   | 26  | taro@example.com
2  | 佐藤花子   | 19  | hanako@example.com
3  | 鈴木一郎   | 30  | ichiro@example.com
4  | 高橋次郎   | 22  | jiro@example.com

5. ROLLBACKで変更を取り消す

5. ROLLBACKで変更を取り消す
5. ROLLBACKで変更を取り消す

ROLLBACKは、「やっぱり今の作業はなかったことにします」という命令です。 消しゴムで下書きを消すイメージをすると分かりやすいです。 ミスに気づいたときでも、安全に元の状態に戻せます。


BEGIN;

DELETE FROM users
WHERE age < 20;

ROLLBACK;

このSQLでは、20歳未満の人を削除しようとしていますが、ROLLBACKを実行しているため削除は取り消されます。 テーブルの中身は、実行前と同じ状態のままです。


id | name       | age | email
---+------------+-----+-------------------
1  | 山田太郎   | 26  | taro@example.com
2  | 佐藤花子   | 19  | hanako@example.com
3  | 鈴木一郎   | 30  | ichiro@example.com
4  | 高橋次郎   | 22  | jiro@example.com

6. トランザクションを使うと何がうれしいのか

6. トランザクションを使うと何がうれしいのか
6. トランザクションを使うと何がうれしいのか

PostgreSQLでBEGIN・COMMIT・ROLLBACKを使うと、データの安全性が大きく向上します。 途中でパソコンが止まったり、操作を間違えたりしても、データが壊れにくくなります。

特に、追加・更新・削除をまとめて行うときは、トランザクションを使うことがとても重要です。 PostgreSQLはこの仕組みがとても強力なので、業務システムやWebサービスでも安心して使われています。

カテゴリの一覧へ
新着記事
New1
PostgreSQL
PostgreSQLのLIMIT・OFFSETとパフォーマンス問題を完全解説|初心者でもわかる安全な使い方
New2
MySQL
MySQLのUPDATE文でデータを更新する基本を徹底解説|SQL初心者でもわかるデータベース更新入門
New3
PostgreSQL
PostgreSQLのOFFSET完全入門|並び替えと組み合わせてデータをスキップする方法を初心者向けに解説
New4
MySQL
MySQLで複数行INSERTを行う方法と注意点を徹底解説|SQL基礎から学ぶデータベース入門
人気記事
No.1
Java&Spring記事人気No1
PostgreSQL
PostgreSQLのDISTINCT完全ガイド|SQLで重複データを除外する方法を初心者向けに解説
No.2
Java&Spring記事人気No2
PostgreSQL
PostgreSQLの主キー・外部キーを完全解説!初心者でもわかる設定方法と考え方
No.3
Java&Spring記事人気No3
PostgreSQL
PostgreSQLのLEFT JOIN完全入門!不足データを補いながらテーブル結合する仕組みをやさしく解説
No.4
Java&Spring記事人気No4
PostgreSQL
PostgreSQLとは?初心者向けに特徴をわかりやすく解説
No.5
Java&Spring記事人気No5
PostgreSQL
PostgreSQLのUPDATE文の使い方(部分更新・条件更新)
No.6
Java&Spring記事人気No6
PostgreSQL
PostgreSQLスキーマ設計のベストプラクティス完全ガイド|初心者でもわかるデータベース整理術
No.7
Java&Spring記事人気No7
PostgreSQL
PostgreSQLスキーマ作成・削除完全ガイド!初心者でもわかるデータベース設計の基礎
No.8
Java&Spring記事人気No8
PostgreSQL
PostgreSQLの権限管理を完全解説|スキーマ単位で理解するデータベースセキュリティの基礎