トランザクションとは
複数のデータベースの更新処理を実行処理がなされるまでは、仮状態で留めておいて
特に問題がなければ、処理をまとめて実行するというもの。
一度のタイミングでまとめて処理するため、処理速度が向上するというメリットがある。
また、トランザクションの処理中は他のトランザクションの処理を受け付けことはできないため、データベースの同時アクセスによるデータの行き違いを防ぐことができる。
つまり、適切なタイミングでトランザクション処理を行うとシステムの高速化&データの整合性を同時に向上させる効果がある。
トランザクションのイメージ
画像は以下のサイトより使わせていただいております。
https://gray-code.com/php/transaction-by-using-pdo/
スタート : beginTransaction()
正確に実行できた? YES : commit()
正確に実行できた? NO : rollback()
try {
// DBへ接続
$dbh = new PDO("mysql:host=localhost;dbname=test;charset=utf8", 'username', 'password');
// トランザクション開始
$dbh->beginTransaction();
// ここにデータベース更新系の処理が入る
// コミットで処理
$dbh->commit();
} catch(PDOException $e) {
// ロールバックで処理キャンセル
$dbh->rollBack();
// エラーメッセージ出力
echo $e->getMessage();
}
// 接続を閉じる
$dbh = null;