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".