Re: update with no changes

Поиск
Список
Период
Сортировка
От Andres Freund
Тема Re: update with no changes
Дата
Msg-id DC2AAA3B-A175-4920-AB44-3E3C7AE51075@anarazel.de
обсуждение исходный текст
Ответ на update with no changes  (Marcos Pegoraro <marcos@f10.com.br>)
Ответы Re: update with no changes  ("David G. Johnston" <david.g.johnston@gmail.com>)
Список pgsql-hackers
Hi,

On November 19, 2021 8:38:25 AM PST, Marcos Pegoraro <marcos@f10.com.br> wrote:
>Why this happens ?
>
>create table t(i int);
>CREATE TABLE
>insert into t values(1);
>INSERT 0 1
>select (ctid::text::point)[1]::int, * from t;
> ctid | i
>------+---
>    1 | 1
>(1 row)
>update t set i = i;
>UPDATE 1
>select (ctid::text::point)[1]::int, * from t;
> ctid | i
>------+---
>    2 | 1
>(1 row)
>
>If nothing was changed, why create a new record, append data to wal, set
>old record as deleted, etc, etc ?

You can't just skip doing updates without causing problems. An update basically acquires an exclusive row lock (which
inturn prevents foreign key references from being removed etc). Just skipping that would cause a lot of new deadlocks
andcorrectness issues. 

There's also cases where people intentionally perform updates to move records around etc.

Regards,

Andres
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.



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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Improving psql's \password command
Следующее
От: Tom Lane
Дата:
Сообщение: Re: update with no changes