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

MySql - TRÊN CHÈN KHÓA DUPLICATE

Với ON DUPLICATE KEY UPDATE , bạn không thể chèn vào bảng khác - cũng như không có sẵn chức năng thay thế.

Hai cách tùy chỉnh / thay thế mà bạn có thể thực hiện điều này:

  1. Sử dụng stored procedure như được nêu trong câu trả lời được chấp nhận cho câu hỏi này: MySQL ON DUPLICATE KEY chèn vào bảng kiểm tra hoặc nhật ký

  2. Tạo trigger đã ghi lại mọi INSERT cho bảng của bạn vào một bảng khác và truy vấn bảng đầy "nhật ký" để tìm bất kỳ bản sao nào.

Một cái gì đó tương tự như thế này sẽ hoạt động:

CREATE TABLE insert_logs (
    id int not null
);

delimiter |
CREATE TRIGGER insert_logs_trigger BEFORE INSERT ON your_table
    FOR EACH ROW BEGIN
        INSERT INTO insert_logs SET id = NEW.id;
    END;
|

Để có danh sách các bản sao trong bảng, bạn có thể cho chúng tôi:

SELECT id FROM insert_logs HAVING COUNT(id) > 1 GROUP BY id;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CẬP NHẬT MySQL:5 mẹo hàng đầu cho nhà phát triển T-SQL

  2. Thêm các biến tùy chỉnh khác vào chèn mysql trên blueimp / jquery-file-upload

  3. Cách tùy chỉnh bản sao lưu MySQL &MariaDB của bạn với ClusterControl

  4. Làm thế nào để thay đổi vị trí cột của bảng MySQL mà không làm mất dữ liệu cột?

  5. Hợp nhất hai bảng với số cột khác nhau