on duplicate key update 사용시 last_Insert_Id 가져오기

mysql 에서 insert 와 update를 한번의 query에서 할 수 있는 방법은

 

"on duplicate key update" 기능을 이용하면된다.

 

그런데, insert 구문으로만 등록시 lastInsertId는 잘 가져오는데,

 

"on duplicate key update"를 붙여주면 lastInsertId를 못가져오는 경우가 발생한다.

 

아마도 update구문이 같이 있다보니, 그러는거 같은데... 흠..

 

이를 해결하기 위해서는,

당연히 auto_increment 컬럼(expr)이 있어야 하며,

이를 on duplicate key update 구문에 추가해 주면 된다.

 

insert into ebook (expr, name,title) values (0, 'test','asfdafd') on duplicate key update name='test',title='asfdafd', expr=last_insert_id(expr);

 

이렇게 하면 insert 가 실행되고 나서 last_insert_id()를 가져올 수 있다.