"user 2" id: 3, name: "user 3" id: 4, name: "user 4" Tr1 SELECT * FROM users WHERE id = 2 Tr2 UPDATE users ( 略) WHERE id = 2 SELECT * FROM users WHERE id = 4 Tr 3 SELECT * FROM users WHERE id = 4 id が2 のレコードに共有ロックをかける id が4 のレコードに共有ロックをかける id が2 のレコードの共有ロックが開放されるのを待つ 共有ロックが取得されていても、共有ロックは 取得できるので待たない
https://www.postgresql.org/message-id/3073cc9b0901272156x60d7deds47d685993823adec@mail.gmail.com https://www.postgresql.org/docs/13/tutorial-transactions.html#:~:text=PostgreSQL%20actually%20treats,transaction%20block. 素朴な疑問 UPDATE users SET name = “user updated”;