Re: Lock!
От | Oliver Elphick |
---|---|
Тема | Re: Lock! |
Дата | |
Msg-id | 1066148873.5581.67.camel@linda.lfix.co.uk обсуждение исходный текст |
Ответ на | Lock! ("Szabó Péter" <matyee@westel900.net>) |
Ответы |
Re: Lock!
|
Список | pgsql-admin |
On Mon, 2003-10-13 at 11:30, Szabó Péter wrote: > Hi! > > I have a lock problem. If i lock a record with SELECT FOR UPDATE, than > i try to lock again, the process just wait until the record free. But > i have to send a message to the user like 'The record is locked, try > later.'. But i can't. How can i do this? You can't. Quote from the manual: So long as no deadlock situation is detected, a transaction seeking either a table-level or row-level lock will wait indefinitely for conflicting locks to be released. This means it is a bad idea for applications to hold transactions open for long periods of time (e.g., while waiting for user input). You need to rethink your application. What I have done is to read the data with SELECT. Just before changing it I do SELECT FOR UPDATE and tell the user if anything he is changing has changed since he read it in. If there has been no change, I go ahead with the UPDATE. This means that records are only locked for a very short time. Now, instead of the possibility of being locked out for a long time, there is a possibility of having to throw away some editing, but I estimate that to be less of a cost overall. -- Oliver Elphick Oliver.Elphick@lfix.co.uk Isle of Wight, UK http://www.lfix.co.uk/oliver GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A 614D 4C34 3E1D 0C1C ======================================== "I delight to do thy will, O my God; yea, thy law is within my heart." Psalms 40:8
В списке pgsql-admin по дате отправления: