ON DUPLICATE KEY UPDATE, IGNORE

on duplicate key update 를 사용하면 auto_increment 의 기존값은 보존이 되지만, 이후 같은 키가 있어서 업데이트가 될 경우 auto_increment 를 하나 증가시키고 업데이트를 실행한다.

즉 primary key 의 값은 하나를 건너띄고 다음 번호를 생성하게 된다.

입력 1 ... primary key 1
입력 2 ... primary key 2
입력 1(업데이트) ... primary key 3 → primary key 1
입력 3 ... primary key 4(앞에서 auto_increment로 인해 삽입하면서 먼저 1을 올렸고, 같은 값이었기 때문에 업데이트를 실행한다. 따라서 현재 입력되는 auto_increment 의 값은 4가 된다.)

IGNORE 는 같은 것이 있다면 무시하고 그냥 다음으로 넘어간다.

 

on duplicate key update 는 뒤에 나오는 업데이트 구문을 잘 활용할 수 있다. 그리고 lastInsertId 를 찾을 수도 있다.

그런데 가끔 lastInsertId 를 찾지못해 0이 나오는 경우가 발생하는데 왜 그런지 모르겠다.

+ Recent posts