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

CHÈN VÀO ... TRÊN CẬP NHẬT DUPLICATE tất cả các giá trị

INSERT INTO … ON DUPLICATE KEY UPDATE hoạt động theo cách này:

  • nó cố gắng chèn một hàng như bình thường
  • nếu có bất kỳ vi phạm ràng buộc nào trong bất kỳ cột nào xảy ra, nó sẽ thực thi UPDATE thay vào đó, câu lệnh trên hàng hiện có INSERT tuyên bố xung đột

Điều đó đơn giản có nghĩa là nếu UPDATE một mình câu lệnh sẽ thành công, ON DUPLICATE KEY UPDATE của nó tương đương cũng sẽ hoạt động. Điều đó có nghĩa là bạn rõ ràng không thể vi phạm bất kỳ ràng buộc nào trong UPDATE một trong hai câu lệnh hoặc toàn bộ điều sẽ không thành công (ví dụ:cố gắng đặt giá trị trên UNIQUE cột đã tồn tại trong một hàng khác).

Nếu bạn đặt lại cùng một giá trị trên cùng một cột, đó về cơ bản là không chọn. Giá trị trong cột không thay đổi và do đó cũng không thể gây ra bất kỳ lỗi nào (giả sử bạn không có bất kỳ BEFORE UPDATE nào thực sự thú vị kích hoạt có thể hoạt động sai). Ở đây, số lượng cột không liên quan, bạn có thể thay đổi bao nhiêu hoặc ít trong một câu lệnh tuỳ thích.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự khác biệt giữa MySQLdb, mysqlclient và MySQL connector / Python là gì?

  2. Lỗi cú pháp MySQL trên DELIMITER trước khi TẠO TRIGGER

  3. Cách chèn nhiều giá trị vào bảng trong php

  4. Viết một truy vấn kế thừa được viết bằng SQL bằng cách sử dụng một phép nối bên trong?

  5. Cách truy vấn sql với bản ghi hoạt động cho các ngày trong khoảng thời gian được chỉ định