During a DML operation of a table, all read references to a column have to use the original value of the column. This can be shown when swapping column values:
create table foo
(
id1 integer not null,
id2 integer not null,
primary key (id1, id2)
);
insert into foo
(id1, id2)
values
(1,2);
update foo
set id1 = id2,
id2 = id1;
select *
from foo;
The above should return 2,1 as the result.
A DBMS that does not support read-consistency for DML statements might return 2,2