Mysql
 sql >> база данни >  >> RDS >> Mysql

Актуализацията на MySQL, променяща множество колони, е неатоменна?

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, който прилага това с двете колони, съдържащи една и съща стойност след актуализацията.

Що се отнася до начина, по който бихте разрешили това, вместо това бих изтеглил стойностите от базата данни, ще направя изчисленията вътре във вашето приложение (вместо вашия израз за актуализиране) и след това ще актуализирам базата данни с изчислените стойности. По този начин можете да гарантирате, че изчислението ще бъде извършено по последователен начин.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да предотвратим дублиране на потребителски имена, когато хората се регистрират?

  2. Инсталиране на MySQL Python на Mac OS X

  3. Предупредителен код на Mysql 1592 Небезопасно изявление, записано в двоичния дневник, използвайки формат на изявление

  4. NodeJS MySQL:измерване на времето за изпълнение на заявка

  5. Получаване на необработен низ за SQL заявка от подготвени оператори на PDO