0

トランザクション T1 を考えてみましょう。

Start transaction;   
Update emp set emp_id=1 where emp_id=3;   
commit;

私が使用しているエンジンは INNODB エンジンです。
上記のトランザクションのコミット操作の前に、テーブルに再度アクセスしましたが、以前にコミットされた値が表示されています。行レベルのロックがテーブルに配置されている場合、エラーが表示される可能性があります (トランザクションの途中でアクセスできません)。 私の理解に誤りはありますか? 誰でもこれについて私を助けることができますか?

4

1 に答える 1

0

トランザクションの一部として行われるものはすべて、トランザクションがコミットされる前であっても、同じトランザクションで利用できます。変更は他のトランザクションでは利用できません。

これをテストするには、あるトランザクションで更新してから、別の端末から新しいトランザクションを開始してアクセスを試みる必要があります。2 番目のトランザクションはデータを読み取ることができますが、更新しようとすると更新がブロックされ、最初のトランザクションがコミットされるまで待機します。

2 番目の選択を待って更新されたデータを返すようにする場合は、更新のために選択を使用する必要があります。

于 2013-03-03T04:20:08.090 に答える