Re: select for update question
От | A B |
---|---|
Тема | Re: select for update question |
Дата | |
Msg-id | dbbf25901001130655t9beeaa8ia5bd836426fc0e2@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: select for update question ("A. Kretschmer" <andreas.kretschmer@schollglas.com>) |
Ответы |
Re: select for update question
|
Список | pgsql-novice |
>> I'm looking into how to update a row in a table while protecting it >> from access by others. >> >> so far I've come up with this solution: >> >> create function dostuff() returns void as $$ >> declare >> tmp integer; >> begin >> select id into tmp from tableX where id>305 limit 1 for update; >> update tableX set some_field = some_value where id=tmp; >> end; $$ language plpgsql; >> >> will that guarantee that the row I selected wil be updated within >> this function and no one else can sneak in between and update or >> delete the row? >> >> >> What would I use if I would write >> >> lock table tableX IN .... MODE at the start of my function? >> >> Any particular benefit with either method? > > If you lock the table, the whole table is locked. The first method (with > select for update) locks only the one record you want to update. > > For real multi-user-access the first method are better. When will it stop beeing a better method? When you select a large enough percentage of the rows?
В списке pgsql-novice по дате отправления: