3


1

PHPのmysqliを使用して、どのように行レベルロックを適用しますか?

行レベルのロックは、現在の現在の行を自分の基準に一致する行を編集することを禁止します。 しかし、彼らはユーザーがあなたの基準に合う行を挿入するのを止めますか?

ありがとう

2 Answer


8


特定の行を編集からロックしたい場合は、SELECT問い合わせの終わりに `FOR UPDATE`を使ってください。 これにより、トランザクション内の行がロックされ、他のユーザーがその行を更新できなくなります。 これはinnodbのようなトランザクションストレージエンジンでのみ機能します。

あなたの質問に答えて、はい、行レベルのロック「あなたの基準に一致する現在存在する行の編集を誰かに止めさせる」。 より具体的には、(トランザクション内で)行をINSERT、UPDATE、またはDELETEした場合、その行はトランザクションがコミットされるまで他の誰かによる編集からロックされます。 あなたが `FOR UPDATE`を使って行をSELECTした場合、それはその行もロックします。

ただし、これは「ユーザーが基準に一致する行を挿入するのを止める」ことではありません。


0


あなたが達成しようとしていることは何ですか? InnoDBエンジンは ローレベルロックを使用しますが、これは自動的なMySQL内部プロセスです。