Re: looping through query to update column

Поиск
Список
Период
Сортировка
От Albe Laurenz
Тема Re: looping through query to update column
Дата
Msg-id 52EF20B2E3209443BC37736D00C3C1380AD60DA9@EXADV1.host.magwien.gv.at
обсуждение исходный текст
Ответ на looping through query to update column  (Jean-Christophe Roux <jcxxr@yahoo.com>)
Список pgsql-general
Rafal Pietrak wrote:
>> You might use 'ctid' to identify the row if you have no suitable
>
> How should I use 'ctid'? Like in the case, when I've selected
> something by means of SELECT ... FOR UPDATE?

You lock the table (with LOCK) or the row you're working on
(with SELECT FOR UPDATE) so that nobody else can change it while
you are working on it.

You need something like ctid if your table has the fundamental flaw
of lacking a primary key.

Sample:

FOR row IN SELECT ctid, * FROM table FOR UPDATE LOOP
   UPDATE table SET column=value WHERE ctid=row.ctid;
   ...
END LOOP;

If your table has a primary key, use that instead and please
forget about the ctid.

Yours,
Laurenz Albe

В списке pgsql-general по дате отправления:

Предыдущее
От: "Harald Armin Massa"
Дата:
Сообщение: Re: Partitioning vs. View of a UNION ALL
Следующее
От: Richard Broersma Jr
Дата:
Сообщение: Re: Performance Problem