2012-08-13 6 views
7

나는 INSERT IGNOREINSERT ... ON DUPLICATE KEY UPDATE이 존재한다는 것을 알고 있습니다. 그러나 중복 키가있을 경우 임시 테이블에 INSERT을 작성하여 위반 한 고유 키를 기록하여 사용자에게 출력 할 수 있습니다.MySql - 이중 키 삽입시

ON DUPLICATE INSERT 할 수있는 방법이 있습니까? 도움이된다면 대량 삽입을 시도하고 있습니다.

+0

가능한 중복의 [MySQL을 ON DUPLICATE KEY 감사 또는 로그 테이블에 삽입] (http://stackoverflow.com/questions/3884344/mysql-on-duplicate-key-insert-into-an-audit-or-log-table) –

답변

7

ON DUPLICATE KEY UPDATE을 사용하면 다른 테이블에 삽입 할 수 없으며 사용할 수있는 다른 기능이 없습니다.

두 개의 사용자 정의/다른 방법이 작업을 수행 할 수 있습니다

  1. stored procedure을 사용하여이 질문에 대한 허용 대답에 명시된 바와 같이 : MySQL ON DUPLICATE KEY insert into an audit or log table

  2. 만들기 테이블마다 INSERT 기록 trigger 다른 테이블에 저장하고 모든 로그에 대해 "로그"로 가득 찬 테이블을 쿼리합니다. 이와 유사한

뭔가 작동합니다 :

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; 
| 

테이블에서 중복의 목록을 얻으려면, 당신은 우리를 수 :

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

이것은 매우 도움이됩니다. 감사합니다. ! :) – matt