トランザクション内のSELECTクエリ自体は、UPDATEおよびDELETEから適切に保護されていません。
以下を使用するために必要なもの:
を発行する場合、トランザクションの終了時にテーブルDelete From orders Where id=1
内の行orders
がロックを解放すると発生します。READ UNCOMMITTED
トランザクション分離レベルを使用して論理的に削除を実行して(Dev / Staging Server上で)実験することができますが、コミット時にのみ、永続的に表示および記録されます。
2番目のトランザクションでは、基本的にすべてのベットがオフになっています。走れば
select * From orders Where id=1;
UPDATE orders SET username="John" Where id=1;
実行Delete From orders Where id=1
するとすぐにコミットされます。MySQLがこれらのステートメントを実行する順序に応じて、削除行が表示されます(または表示されません)。
警告
MySQL 5.6には次のものが含まれます。
START TRANSACTION READ WRITE;
START TRANSACTION READ ONLY;
READ WRITEおよびREAD ONLY修飾子は、トランザクションアクセスモードを設定します。トランザクションで使用されるテーブルへの変更を許可または禁止します。READ ONLY制限は、トランザクションが他のトランザクションから見えるトランザクションテーブルと非トランザクションテーブルの両方を変更またはロックすることを防ぎます。トランザクションは引き続き一時テーブルを変更またはロックできます。これらの修飾子はMySQL 5.6.5以降で使用できます。