Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cập nhật MySQL thay đổi nhiều cột không phải là nguyên tử?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo tập lệnh đăng nhập an toàn trong PHP và MySQL mà không cần HTTPS

  2. tuyên bố chuẩn bị với Eloquent ORM / laravel

  3. Làm thế nào để đặt bộ mã cho MySQL trong RODBC?

  4. Chuyển đổi ngày ở định dạng MM / DD / YYYY sang ngày MySQL

  5. Lỗi MySQL - Bạn có lỗi trong cú pháp SQL của mình