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

Mysql Python kiểm tra bản sao trước khi chèn

Trước tiên, bạn có thể tìm hiểu xem nó có ở trong đó hay không, bằng cách SELECT nhập bởi url hoặc bạn có thể tạo url trường duy nhất:

CREATE TABLE IF NOT EXISTS kompas_url
    ...
    url VARCHAR(1000) UNIQUE,
    ...
)

Điều này sẽ ngăn MySQL chèn một hàng trùng lặp, nhưng nó cũng sẽ báo lỗi khi bạn thử và chèn. Điều này không tốt - mặc dù chúng tôi có thể xử lý lỗi nhưng nó có thể ngụy tạo cho những người khác. Để giải quyết vấn đề này, chúng tôi sử dụng ON DUPLICATE KEY UPDATE cú pháp:

INSERT INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
ON DUPLICATE KEY UPDATE modified_date = NOW()

Điều này cho phép chúng tôi cung cấp UPDATE trong trường hợp giá trị trùng lặp trong một trường duy nhất (trường này có thể bao gồm khóa chính của bạn). Trong trường hợp này, chúng tôi có thể muốn cập nhật modified_date trường với ngày hiện tại.

CHỈNH SỬA: Theo đề xuất của ~ unutbu , nếu bạn không muốn thay đổi bất kỳ thứ gì trên bản sao, bạn có thể sử dụng INSERT IGNORE cú pháp. Điều này đơn giản hoạt động như sau:

INSERT IGNORE INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())

Điều này chỉ đơn giản là biến một số loại lỗi thành cảnh báo — hữu ích nhất là lỗi cho biết sẽ có một mục nhập duy nhất trùng lặp. Nếu bạn đặt từ khóa IGNORE vào tuyên bố của bạn, bạn sẽ không gặp lỗi — truy vấn sẽ đơn giản bị loại bỏ. Trong các truy vấn phức tạp, điều này cũng có thể ẩn các lỗi khác có thể hữu ích, vì vậy tốt nhất bạn nên đảm bảo mã của mình đúng nếu bạn muốn sử dụng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để định cấu hình hibernate.cfg.xml thành applicationContext.xml dưới dạng dataSource?

  2. Cách giới hạn truy vấn SHOW TABLES

  3. cách hiển thị toàn bộ biến với khoảng trắng trong hộp văn bản trong php

  4. Cách cập nhật cơ sở dữ liệu tự động sau khi phiên hết hạn mà không cần làm mới trên trang của tôi

  5. MySQL:Đánh máy NULL thành 0