短いバージョン:「状況によって異なります」。
長いバージョン:
読み取り-変更-書き込みサイクルを実行している場合は、トランザクション内にある必要があるだけでなく、SELECT ... FOR UPDATE
も必要です。 後で変更する予定のレコード。そうしないと、書き込みが失われるリスクがあり、レコードを読み取ってから更新を書き込んだときの間に他の誰かが行った更新を上書きします。
SERIALIZABLE
トランザクション分離もこれに役立ちます。
並行性と分離を本当に理解する必要があります。残念ながら、理解せずに単純で簡単な「Xを実行する」という答えは、関連するすべてのテーブルをロックしてすべてのトランザクションを開始することだけです。ほとんどの人はそれをしたくありません。
tx分離ドキュメント
。同時psql
を試してみてください 競合状態と競合を作成するためのセッション(複数の端末)。