PostgreSQL, Oracle en SQL Server behandelen dit allemaal als een atomaire operatie. Zie de volgende SQL Fiddle en verander de server om het gedrag van de volgende SQL te zien :
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 was de enige RBDMS die dit implementeerde waarbij beide kolommen na de update dezelfde waarde bevatten.
Wat betreft hoe u dit zou oplossen, zou ik in plaats daarvan de waarden uit de database halen, de berekeningen in uw toepassing uitvoeren (in plaats van uw update-instructie) en vervolgens de database bijwerken met de berekende waarden. Op deze manier kunt u garanderen dat de berekening op een consistente manier wordt uitgevoerd.