行をロックするには、
require_once ("config.inc.php"); //データベース接続
mysql_query("BEGIN"); ( "SELECT * FROM `news` where id=1 for update ");
echo "test"?> 次に、IE ウィンドウでこのステートメントを実行すると、実行結果が正常に表示されます
ウィンドウを開いて phpmyadim を開き、SQL ステートメントを実行します
delete FROM `news` where id=1
実際には、ロックが成功しなかったことを示す最初の行を削除しました、
php ではどのように書けばよいでしょうか?
ディスカッションへの返信 (解決策) ストレージ エンジンで FOR UPDATE を使用する場合、クエリ検証の対象となる行は、現在のトランザクションが終了するまで書き込みロックされます。
ストレージ エンジンで FOR UPDATE を使用する場合、クエリ検証の対象となる行は、現在のトランザクションが終了するまで書き込みロックされます。
返信してくれたモデレーターに感謝します。今私にとって最も重要なことは、php での書き方がわからないということです。上記の書き方は正しいですか?
主にPHPで悲観的なロック行を記述する方法を知りたいです。友達を助けてください
あなたのテストデザインはこうあるべき プログラムaが実行中
SELECT * FROM `news` where id=1 for update
、プログラムbが実行中
delete FROM `news` where id=1
この程度はわかりにくい、またそうなる早すぎるか遅すぎるか、いいえ
あなたが書いたことは間違っていませんが、合格したテストは間違っています
ロック (テーブル ロック、行ロック) は現在の接続でのみ有効であり、接続が閉じられるとロックは解除されます
テスト設計はプログラム a が実行している中にあるはずです
SELECT * FROM `news` where id=1 for update
、プログラム b が実行中です
delete FROM `news` where id=1
この程度は把握するのが難しいですが、早すぎても遅すぎてもうまくいきません
モデレータさん、ありがとうございます。自分が書いた内容が大丈夫だと分かっていれば良いでしょう