1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的備忘録:トランザクションの基本とMySQLでの使い方を記事にアウトプットしてみた

Last updated at Posted at 2025-04-03

はじめに

データベースの操作において「トランザクション」は、データの整合性を保つうえで欠かせない重要な概念です。

個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。

この記事では、MySQLを中心にトランザクションの基本とその使い方について、自分用にまとめておきます。

書こうと思ったきっかけ

複数のSQLを連続で実行する中で、一部の処理だけが成功して残りが失敗する状況がありました。データが中途半端な状態にならないようにしたいと思い、トランザクションの理解と使い方を整理するためにこの備忘録を作成しました。

トランザクションとは?

トランザクションは、ひとまとまりのデータベース処理を1つの単位として扱う機能です。すべての処理が成功することで初めて反映され、途中で失敗した場合はすべて取り消されます。

ACID特性

  1. Atomicity(原子性):すべての処理は一つの単位として完全に実行されるか、まったく実行されないか。
  2. Consistency(一貫性):トランザクション前後でデータの整合性が保たれる。
  3. Isolation(独立性):他のトランザクションの影響を受けずに処理が行われる。
  4. Durability(永続性):トランザクションが完了したら、その結果は永続的に保存される。

トランザクションの基本操作

-- トランザクション開始
START TRANSACTION;

-- SQL文を実行
UPDATE accounts SET balance = balance - 10000 WHERE id = 1;
UPDATE accounts SET balance = balance + 10000 WHERE id = 2;

-- 正常に終わったら確定
COMMIT;

-- エラーがあったら取り消す
ROLLBACK;

注意点

  • COMMIT を忘れると、変更が永続化されません。
  • 自動コミットが有効な場合は、明示的に SET autocommit = 0; で無効化する必要があります。
  • 一部のストレージエンジン(例:MyISAM)はトランザクションをサポートしていません。(自分調べ)

まとめ

トランザクションを正しく使うことで、データの整合性を守りながら安心して複雑な操作を行うことができます。今後は、より複雑なトランザクション制御やエラーハンドリングも含めて実践していきたいと思います!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?