Re: pgplsql SELECT INTO ... FOR UPDATE
От | Berend Tober |
---|---|
Тема | Re: pgplsql SELECT INTO ... FOR UPDATE |
Дата | |
Msg-id | 63223.216.238.112.88.1103116496.squirrel@216.238.112.88 обсуждение исходный текст |
Ответ на | pgplsql SELECT INTO ... FOR UPDATE (transaction/locking question) (Eric Brown <eric.brown@propel.com>) |
Список | pgsql-general |
> I'm trying to write a stored procedure in plpgsql that selects a row > and possibly increments one of its fields. I thought I would do SELECT > INTO my_record * FROM my_table FOR UPDATE WHERE ..., but apparently > plpgsql doesn't like the FOR UPDATE in a stored procedure. Does plpgsql > automatically lock any rows I read until the stored procedure exits? > I'm just not sure how to get the functionality I'm looking for and not > have to concern myself with concurrency. > > Example: > create table t_test (x int, y int); > create or replace function f_test(int) returns void as ' > declare r record; > begin > select into r *, oid from t_test -- FOR UPDATE > where x = $1; > if found then > update t_test set y=y+1 where oid = r.oid; > end if; > return; > end' language plpgsql; > insert into t_test values (1,1); > select f_test(1); > Would it be better to just write update t_test set y=y+1 where x = $1;
В списке pgsql-general по дате отправления: