PostgreSQL, Oracle og SQL Server behandler alle dette som en atomoperation. Se følgende SQL Fiddle, og skift serveren for at se adfærden af følgende SQL :
CREATE TABLE Swap (
a CHAR(1),
b CHAR(1)
);
INSERT INTO Swap (a, b) VALUES ('a', 'b');
UPDATE Swap SET a = b, b = a;
SELECT * FROM Swap;
MySQL var det eneste RBDMS, der implementerede dette med begge kolonner, der indeholdt den samme værdi efter opdateringen.
For så vidt angår hvordan du ville løse dette, ville jeg i stedet trække værdierne fra databasen, lave beregningerne inde i din applikation (i stedet for din opdateringssætning) og derefter opdatere databasen med de beregnede værdier. På denne måde kan du garantere, at beregningen udføres på en ensartet måde.