Thread: explicit-locking.html "key values" reference
hi.
FOR KEY SHARE
Behaves similarly toFOR SHARE
, except that the lock is weaker:SELECT FOR UPDATE
is blocked, but notSELECT FOR NO KEY UPDATE
. A key-shared lock blocks other transactions from performingDELETE
or anyUPDATE
that changes the key values, but not otherUPDATE
, and neither does it preventSELECT FOR NO KEY UPDATE
,SELECT FOR SHARE
, orSELECT FOR KEY SHARE
.
A key-shared lock blocks other transactions from performingDELETE
or anyUPDATE
that changes the key values
querya: select col1,col2,col3 from a for key share of a
Does "the key values" refer to these rows returned by the querya?
I still feel confused about "the key values".
On Fri, May 26, 2023 at 8:02 PM jian he <jian.universality@gmail.com> wrote:
I still feel confused about "the key values".
The "key" here is the Foreign Key relationship. In short, FOR NO KEY UPDATE, promises that PK/FK values on the table will not be changed. Only non-FK/PK columns can be changed. In neither case may the row be removed either since that would necessitate changing the key to "non-existent". However, the "UPDATE" part basically means "I am going to update some other column". On the KEY SHARE side you basically get "I only care that this row/relationship continues to exist, you may change other attributes".
David J.