sql >> Database teknologi >  >> RDS >> Mysql

MySQL-opdatering ændre flere kolonner er ikke-atomare?

PostgreSQL, Oracle og SQL Server behandler alle dette som en atomoperation. Se følgende SQL Fiddle, og skift serveren for at se adfærden af ​​følgende 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 var det eneste RBDMS, der implementerede dette med begge kolonner, der indeholdt den samme værdi efter opdateringen.

For så vidt angår hvordan du ville løse dette, ville jeg i stedet trække værdierne fra databasen, lave beregningerne inde i din applikation (i stedet for din opdateringssætning) og derefter opdatere databasen med de beregnede værdier. På denne måde kan du garantere, at beregningen udføres på en ensartet måde.



  1. Oracle 12cR2 nu i Beta

  2. Installation af QMYSQL-driver

  3. Ved hjælp af MySql, kan jeg sortere en kolonne, men har 0 kommet sidst?

  4. Forkert heltalsværdi:'' for kolonne 'id' i række 1