レッスンと同じソースで
$db->beginTransaction();
$db->exec("update users set score = score - 10 where name = 'taguchi'");
$db->exec("update users set score = score + 10 where name = 'fkoji333'");
$db->commit();
というコードを試してみたのですが、単に taguchi さんのスコアが更新されるだけでロールバックが発生しませんでした。トランザクションは「一連の処理が必ず行われる事を保障」するものであり、fkoji333
のレコードはデータベースに存在しないため、処理に失敗して Exception が出ることを期待していたのですが、なぜ Exception が発生せず、処理がロールバックしなかったのでしょうか。
この回答を見るにはプレミアムプランへの登録が必要です
プレミアムプランとは?