Когда строка обновляется или удаляется в PostgreSQL, она на самом деле не обновляется и не удаляется.Старая версия строки просто остается в таблице и помечается как удаленная определенной транзакцией.Это делает обновление очень похожим на удаление старой версии и вставку новой версии строки.
Откат транзакции - это всего лишь пометка транзакции как прерванной.Затем старая версия строки автоматически снова становится текущей версией строки, без необходимости что-либо отменять.
Ахиллесова пята этого метода заключается в том, что при модификации данных создаются «версии мертвых строк», которые необходимо восстановить позже.с помощью фоновой процедуры, называемой «вакуумирование».