PostgreSQL, Oracle i SQL Server traktują to jako operację atomową. Zobacz następujące SQL Fiddle i przełącz serwer, aby zobaczyć zachowanie następującego 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 był jedynym RBDMS, który zaimplementował to z obiema kolumnami zawierającymi tę samą wartość po aktualizacji.
Jeśli chodzi o sposób, w jaki można to rozwiązać, zamiast tego wyciągnę wartości z bazy danych, wykonam obliczenia w aplikacji (zamiast instrukcji aktualizacji), a następnie zaktualizuję bazę danych obliczonymi wartościami. W ten sposób możesz zagwarantować, że obliczenia będą wykonywane w spójny sposób.