0

共有モード ロックでロックを作成するには、トランザクションを開始する必要がありますか?

つまり、どちらか、

$dbc -> query("SELECT * FROM table WHERE id = 1 LIMIT 1 LOCK IN SHARE MODE");

または、

$dbc -> beginTransaction();
$dbc -> query("SELECT * FROM table WHERE id = 1 LIMIT 1 LOCK IN SHARE MODE");
$dbc -> commit();

ありがとう

4

1 に答える 1

0

自動コミットを有効にしてセッションを開始すると (通常は PHP のデフォルトです)、トランザクションが開始され、コミットされます。を呼び出す場合beginTransaction、実際には次のように変換する必要があります。

SET autocommit=0;
START TRANSACTION;

commit は autocommit を返す必要があります。

つまり、autocommit モードで実行する場合は、トランザクションを明示的に開始してコミットする必要はありません。

PS: を実行するときでも、実際にはトランザクションを開始する必要はありませんautocommit=0。実行するまで変更はコミットされないためです。commit;

于 2011-12-10T11:16:37.837 に答える