トランザクション内で行うべきことは更新処理のみ

トランザクション内で行うべきことは更新処理のみ

どうしてそう思うのか?

  • トランザクションはアトミックな処理を保証するもの
  • 一方でアトミックでない処理にならない様にロックをかける
  • 場合によっては別ユーザにLock wait timeoutの被害を与えるなんてこともありえます

どうすればよかったのか?

  • トランザクションを開始する前にすべてのREAD処理を終わらせる
  • 依存するIDがわからない場合にlastInsertIdを取得するといった行為はその限りではありません
  • ORMを使っていれば、依存するエンティティのIDを使えば無意識にできますね

伝えたいこと