Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Aktualizacja MySQL zmieniająca wiele kolumn jest nieatomowa?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wypełnij pole rozwijane z tabeli mySQL w PHP

  2. Jak uruchomić serwer MySQL w systemie Windows XP

  3. Oblicz sumę bieżącą w MySQL

  4. Jak wybrać ostatnie 3 minuty rekordów z MySQL za pomocą PHP

  5. Obetnij wszystkie tabele w bazie danych MySQL, które pasują do wzorca nazwy