PostgreSQL, Oracle và SQL Server đều coi đây là một hoạt động nguyên tử. Xem SQL Fiddle sau và chuyển đổi máy chủ để xem hoạt động của SQL sau :
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 là RBDMS duy nhất thực hiện điều này với cả hai cột chứa cùng một giá trị sau khi cập nhật.
Theo như cách bạn giải quyết vấn đề này, thay vào đó, tôi sẽ lấy các giá trị từ cơ sở dữ liệu, thực hiện các phép tính bên trong ứng dụng của bạn (thay vì câu lệnh cập nhật của bạn), và sau đó cập nhật cơ sở dữ liệu với các giá trị được tính toán. Bằng cách này, bạn có thể đảm bảo rằng phép tính sẽ được thực hiện một cách nhất quán.