トランザクションで安全にUPDATE / DELETEを練習する

入門 | 12分 で読める | 2026.06.17

公式ドキュメント

今回やること

この記事では、学習用テーブルで UPDATEDELETE を実行し、BEGINCOMMITROLLBACK の流れを確認します。

変更系SQLは、対象確認、トランザクション、結果確認をセットで練習します。

前提条件

  • SQLを実行できる環境がある
  • 学習用の空データベースで試す
  • 本番データや重要データには実行しない

Step 1: 練習用テーブルを作る

CREATE TABLE tasks (
  id INTEGER PRIMARY KEY,
  title TEXT NOT NULL,
  done BOOLEAN NOT NULL DEFAULT false
);

Step 2: データを入れる

INSERT INTO tasks (id, title, done) VALUES
  (1, 'SQLを読む', false),
  (2, 'WHEREを練習する', false),
  (3, 'JOINを練習する', false);

確認します。

SELECT *
FROM tasks
ORDER BY id;

Step 3: 更新対象をSELECTで確認する

id = 1 のタスクを完了にします。まず対象を確認します。

SELECT *
FROM tasks
WHERE id = 1;

ここで1件だけ表示されることを確認します。

Step 4: トランザクション内でUPDATEする

BEGIN;

UPDATE tasks
SET done = true
WHERE id = 1;

SELECT *
FROM tasks
WHERE id = 1;

まだ COMMIT していません。結果を見て問題ないか確認します。

Step 5: 取り消してみる

まずは練習として取り消します。

ROLLBACK;

取り消されたか確認します。

SELECT *
FROM tasks
WHERE id = 1;

donefalse に戻っていれば、ROLLBACK を体験できています。

Step 6: 今度はCOMMITする

BEGIN;

UPDATE tasks
SET done = true
WHERE id = 1;

COMMIT;

確定後に確認します。

SELECT *
FROM tasks
WHERE id = 1;

COMMITすると、そのトランザクションの変更は確定します。

Step 7: DELETEも同じ流れで確認する

削除前に対象を確認します。

SELECT *
FROM tasks
WHERE id = 3;

トランザクション内で削除します。

BEGIN;

DELETE FROM tasks
WHERE id = 3;

SELECT *
FROM tasks
ORDER BY id;

ROLLBACK;

ここでは ROLLBACK して、削除を取り消します。

Step 8: WHEREなしの危険を理解する

次のSQLは実行しないでください。

DELETE FROM tasks;

WHERE がないため、全行削除になります。練習でも、危険な形を見たらすぐに違和感を持つことが大切です。

よくあるエラー

エラーよくある原因確認すること
ROLLBACK できないすでに COMMIT したCOMMIT後は基本的に戻せません
全行更新されたWHERE を忘れた実行前にSELECT確認する
更新されない条件に合う行がないSELECT で対象件数を確認
接続先が違う別DBにつないでいるデータベース名を確認する

まとめ

UPDATEDELETE は、実行前に同じ条件で SELECT して対象を確認します。不安な操作は BEGIN で始め、結果を確認してから COMMIT します。取り消す場合は ROLLBACK です。

参考リソース

← 一覧に戻る
PR
PR
PR
PR