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