PostgreSQL, Oracle a SQL Server to všechny považují za atomickou operaci. Podívejte se na následující SQL Fiddle a přepněte server, abyste viděli chování následujícího 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 byl jediný RBDMS, který to implementoval, přičemž oba sloupce po aktualizaci obsahovaly stejnou hodnotu.
Pokud jde o to, jak byste to vyřešili, místo toho bych vytáhl hodnoty z databáze, provedl výpočty uvnitř vaší aplikace (místo vašeho příkazu k aktualizaci) a poté aktualizoval databázi vypočítanými hodnotami. Tímto způsobem můžete zaručit, že výpočet bude proveden konzistentním způsobem.