Re: Rewritten rows on unchanged values
От | Albe Laurenz |
---|---|
Тема | Re: Rewritten rows on unchanged values |
Дата | |
Msg-id | A737B7A37273E048B164557ADEF4A58B057CAB9A@ntex2010a.host.magwien.gv.at обсуждение исходный текст |
Ответ на | Re: Rewritten rows on unchanged values (Adrian Klaver <adrian.klaver@gmail.com>) |
Список | pgsql-general |
Adrian Klaver wrote: > On 03/22/2013 05:32 AM, Bertrand Janin wrote: >> I noticed how rows were re-written to a different location (new ctid) even >> without changes to the values. This illustrate what I mean: >> -- ctid = (0,1) >> SELECT id, xmin, ctid, value >> FROM demo >> WHERE id = 1; >> >> UPDATE demo >> SET value = value >> WHERE id = 1; >> >> -- ctid = (8,41) >> SELECT id, xmin, ctid, value >> FROM demo >> WHERE id = 1; >> >> I'm curious as to what would prevent keeping the row where it is and maybe >> change xmin in place? > > Because Postgres uses MVCC: > > http://www.postgresql.org/docs/9.2/static/mvcc-intro.html > > So an update is a delete and an insert and you are really seeing a new row. You could use a BEFORE UPDATE trigger that returns NULL if all fields are unchanged, but I'm not sure if that is what the OP is looking for. Yours, Laurenz Albe
В списке pgsql-general по дате отправления: