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

MYSQL:Lấy khóa chính hiện có khi chèn bản ghi với khóa duy nhất trùng lặp?

Nếu bạn có UNIQUE lập chỉ mục trên một cột, bất kể bạn đã thử điều gì, RDMS sẽ không cho phép các bản sao trong cột đó (ngoại trừ NULL giá trị).

Như bạn đã nói, có giải pháp để ngăn chặn "lỗi" nếu điều này xảy ra. Có thể là INSERT IGNORE trong trường hợp của bạn.

Dù sao, INSERTUPDATE sửa đổi cơ sở dữ liệu. MySQL không bao giờ trả về giá trị cho các câu lệnh này. Cách duy nhất để đọc DB của bạn là sử dụng SELECT tuyên bố.

Đây là "giải pháp thay thế" rất đơn giản, vì bạn có UNIQUE cột:

INSERT IGNORE INTO tbl (pk, sha_key) VALUES ( ... ), ( ... );
SELECT pk, sha_key FROM tbl WHERE sha_key IN ( ... );
--                                             ^^^
--             Here the list of the sha1 keys you *tried* to insert


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn hàng loạt hoặc cập nhật với Hibernate?

  2. Câu hỏi hóc búa về giao dịch MySQL

  3. Tìm kiếm ký tự cuối cùng trong SQL Regex không hoạt động

  4. mysql chèn nếu giá trị không tồn tại trong bảng khác

  5. SQL tự động tăng nhiều lần trong cùng một bảng