11

テーブルに 5 つの行 (1 から 5) があります。更新のために行2をロックしたいのですが、その間に誰かが行4を更新しようとすると、更新できるはずです。

以下のコードでこれを試していますが、行レベルではなくテーブルレベルでロックを配置しているように感じます。

------ セッション 1

START TRANSACTION;
SELECT * FROM test WHERE t=1 FOR UPDATE;
UPDATE test SET NAME='irfandd' WHERE t=2;
COMMIT;

----- セッション 2 (ブロックされている)

START TRANSACTION;
UPDATE test SET NAME='irfandd' WHERE t=4;
COMMIT;
4

2 に答える 2