Re: Select For Update and Left Outer Join
От | Tom Lane |
---|---|
Тема | Re: Select For Update and Left Outer Join |
Дата | |
Msg-id | 26133.1304287520@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Select For Update and Left Outer Join (Patrick Earl <patearl@patearl.net>) |
Ответы |
Re: Select For Update and Left Outer Join
|
Список | pgsql-hackers |
Patrick Earl <patearl@patearl.net> writes: > The query to get all the pets is as follows: > select * from Pet > left join Dog on Dog.Id = Pet.Id > left join Cat on Cat.Id = Pet.Id > Now suppose you want to lock to ensure that your Cat is not updated > concurrently. You add FOR UPDATE, but then PostgreSQL gets upset and > complains that locking on the nullable side of an outer join is not > allowed. Quite. What would it mean to lock the absence of a row? > From our data model, we know that for every single Pet, there can > never be a Dog or Cat that spontaneously appears, so locking in this > case is totally safe. You might know that, but you didn't explain how you know that or how the database could be expected to know it. regards, tom lane
В списке pgsql-hackers по дате отправления: