2026年5月20日
2026年5月20日
MySQLのトランザクション(BEGIN/COMMIT/ROLLBACK)の使い方
ステップ1: MySQLのトランザクション開始
# MySQL接続コマンド(例:rootユーザーでの接続)
mysql -u root -p
# トランザクションを開始
BEGIN;
ステップ2: SQL操作とコミット
# データの挿入
INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');
# コミットでトランザクションを確定
COMMIT;
ステップ3: トランザクションロールバック
# 失敗した場合のロールバック
ROLLBACK;
# エラー処理例(SQLエラーが発生した場合)
BEGIN;
INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');
IF SQLSTATE = '23000' THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
ステップ4: 実践とトラブルシュート
# トランザクションの使用例(複数ステートメントの処理)
BEGIN;
UPDATE users SET balance = balance - 10 WHERE id = 1;
IF (SELECT balance FROM users WHERE id = 1) < 5 THEN
ROLLBACK;
ELSE
UPDATE products SET stock = stock - 1 WHERE id = 1;
COMMIT;
END IF;
# トランザクションの監視とトラブルシュート
SHOW ENGINE INNODB STATUS;
注意事項
- トランザクションは一連のSQL操作をまとめて管理するため、データの一貫性を保つために重要です。
- SQLエラーが発生した場合にロールバックを実行することで、不完全なデータが保存されることを防げます。
- 大规模なトランザクションはパフォーマンスに影響を与える可能性があるため、適切な設計が必要です。
まとめ
1. トランザクションの開始: BEGINを使用してトランザクションを始める。
2. SQL操作とコミット: SQL命令を実行し、必要であればCOMMITで一連の操作を確定する。
3. ロールバック: ROLLBACKでエラーが発生した場合や不完全な状態でトランザクションをキャンセルする。
4. 複数ステートメントの処理: 一連のSQL命令をまとめて実行し、必要に応じてロールバックする。
5. パフォーマンス管理: 大規模なトランザクションは注意が必要で、適切な設計と監視が重要です。
関連記事: