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

CHÈN MYSQL hoặc CẬP NHẬT NẾU

Đầu tiên, thêm một UNIQUE ràng buộc về tên, mã vạch, mặt hàng, vị trí và giá cả.

ALTER TABLE  tableX
  ADD CONSTRAINT tableX_UQ
    UNIQUE (name, barcode, item, location, price) ;

Sau đó, bạn có thể sử dụng INSERT INTO ... ON DUPLICATE KEY UPDATE :

INSERT INTO tableX
  (name, barcode, item, location, price, quantity, date)
VALUES
  (?, ?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE
  quantity = CASE WHEN VALUES(date) > date
               THEN quantity + VALUES(quantity)        -- add quantity
               ELSE quantity                           -- or leave as it is
             END
, date = CASE WHEN VALUES(date) > date
               THEN VALUES(date) ;                     -- set date to new date
               ELSE date                               -- or leave as it is
             END 

REPLACE cũng có thể được sử dụng nhưng có sự khác biệt về hành vi (điều này đặc biệt quan trọng nếu bạn có khóa ngoại). Để biết chi tiết, hãy xem câu hỏi này “CHÈN BỎ QUA ”So với“ CHÈN… TRÊN CẬP NHẬT KHÓA DUPLICATE ” và câu trả lời của @Bill Kawin thảo luận về sự khác biệt giữa INSERT IGNORE , INSERT ... ON DUPLICATE KEY REPLACE .



  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 chuyển để thay đổi giá trị mặc định cho một trường và chỉ thay đổi giá trị của bản ghi hiện có thành giá trị mặc định mới nếu nó có giá trị mặc định cũ.

  2. Kết nối với MySQL từ .NET bằng Thư viện SSH.NET

  3. Kết nối Java - MySQL:Không cho phép truy xuất khóa công khai

  4. Thay đổi mật khẩu mysql trong vùng chứa Docker

  5. Thủ tục lưu trữ thay thế MySQL