PostgreSQL, Oracle и SQL Server третират това като атомна операция. Вижте следната SQL Fiddle и превключете сървъра, за да видите поведението на следния 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 беше единственият RBDMS, който прилага това с двете колони, съдържащи една и съща стойност след актуализацията.
Що се отнася до начина, по който бихте разрешили това, вместо това бих изтеглил стойностите от базата данни, ще направя изчисленията вътре във вашето приложение (вместо вашия израз за актуализиране) и след това ще актуализирам базата данни с изчислените стойности. По този начин можете да гарантирате, че изчислението ще бъде извършено по последователен начин.