トピック:
MySQL では、BEGIN および COMMIT ステートメント内で FOR UPDATE を使用する必要がありますか、それとも begin と commit は本質的に同じことを行っていますか?
編集:「begin/commit は一連の「FOR UPDATE」と本質的に同じことを行っていますか?
トピック:
MySQL では、BEGIN および COMMIT ステートメント内で FOR UPDATE を使用する必要がありますか、それとも begin と commit は本質的に同じことを行っていますか?
編集:「begin/commit は一連の「FOR UPDATE」と本質的に同じことを行っていますか?
行をロックしたい場合はselect for update
、トランザクションを開始する必要があります。MySQL のドキュメントでは次のことがわかります。
ノート
SELECT FOR UPDATE を使用した更新のための行のロックは、自動コミットが無効になっている場合にのみ適用されます (START TRANSACTION でトランザクションを開始するか、自動コミットを 0 に設定することにより)。自動コミットが有効な場合、仕様に一致する行はロックされません。
FOR UPDATE
トランザクションを開始せずに使用できますが、安全ではありません...
私の質問は、BEGIN / COMMIT ステートメント内の FOR UPDATE が冗長かどうかです。そうではないと思います.. BEGIN...COMMIT は書き込みのみをロックし、読み取りはロックしないためだと思います。またはそうでないかもしれません?