0

トピック:

MySQL では、BEGIN および COMMIT ステートメント内で FOR UPDATE を使用する必要がありますか、それとも begin と commit は本質的に同じことを行っていますか?

編集:「begin/commit は一連の「FOR UPDATE」と本質的に同じことを行っていますか?

4

2 に答える 2

3

行をロックしたい場合はselect for update、トランザクションを開始する必要があります。MySQL のドキュメントでは次のことがわかります。

ノート

SELECT FOR UPDATE を使用した更新のための行のロックは、自動コミットが無効になっている場合にのみ適用されます (START TRANSACTION でトランザクションを開始するか、自動コミットを 0 に設定することにより)。自動コミットが有効な場合、仕様に一致する行はロックされません。

FOR UPDATEトランザクションを開始せずに使用できますが、安全ではありません...

于 2013-07-08T04:28:43.170 に答える
0

私の質問は、BEGIN / COMMIT ステートメント内の FOR UPDATE が冗長かどうかです。そうではないと思います.. BEGIN...COMMIT は書き込みのみをロックし、読み取りはロックしないためだと思います。またはそうでないかもしれません?

于 2013-08-10T22:14:24.893 に答える