Even current versions of PostgreSQL implement UPDATE and DELETE as 'write the new values to the first unused row'. These days the database will VACUUM stale rows in the background automatically, rather than waiting for you to do it yourself. but the fundamental concept is still there.