Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pembaruan MySQL mengubah beberapa kolom bukan atom?

PostgreSQL, Oracle, dan SQL Server semuanya memperlakukan ini sebagai operasi atom. Lihat SQL Fiddle berikut, dan alihkan server untuk melihat perilaku SQL berikut :

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 adalah satu-satunya RBDMS yang mengimplementasikan ini dengan kedua kolom berisi nilai yang sama setelah pembaruan.

Sejauh bagaimana Anda akan menyelesaikan ini, saya malah akan menarik nilai dari database, melakukan perhitungan di dalam aplikasi Anda (bukan pernyataan pembaruan Anda), dan kemudian memperbarui database dengan nilai yang dihitung. Dengan cara ini Anda dapat menjamin bahwa perhitungan akan dilakukan secara konsisten.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Di CentOS7, tidak dapat memulai MySQL

  2. Grup Django menurut tanggal dan nilai SUM

  3. MySQL mendapatkan tanggal n hari yang lalu sebagai stempel waktu

  4. Tidak dapat terhubung ke database jarak jauh menggunakan php

  5. Cara mematikan mode ketat MySQL di Rails