トランザクション内で行うべきことは更新処理のみ
トランザクション内で行うべきことは更新処理のみ
- トランザクションを開始してから更新対象を取得している処理
- モヤりませんか?
どうしてそう思うのか?
- トランザクションはアトミックな処理を保証するもの
- 一方でアトミックでない処理にならない様にロックをかける
- 場合によっては別ユーザにLock wait timeoutの被害を与えるなんてこともありえます
どうすればよかったのか?
- トランザクションを開始する前にすべてのREAD処理を終わらせる
- 依存するIDがわからない場合にlastInsertIdを取得するといった行為はその限りではありません
- ORMを使っていれば、依存するエンティティのIDを使えば無意識にできますね