DataBase/MariaDB & MySQL
[MariaDB/MySQL]데이터 insert하면서 중복되면 update하는 기능
희랍인 조르바
2018. 5. 5. 14:34
다른 개발자분의 소스를 보다가 DB에 insert를 시행하는데
만약 데이터가 있다면 기존의 데이터를 덮어쓰기가 가능한 방법을 찾았다.
MariaDB에만 있는 기능인지 오라클이나 다른 DB에도 있는 기능인지는 모르겠다.
일단, MariaDB/MySQL에 존재하는 기능이다.
그 기능은
INSERT ON DUPLICATE KEY UPDATE 기능이다.
Primary key/Unique key가 기존에 존재하는 데이터를 찾을 경우, 그 데이터에 UPDATE를 하는 것이다.
*쓰는 방법 예시
1 2 3 4 5 6 7 8 9 10 11 12 13 | INSERT INTO book_table SET book_seq = 1000 -- primary/unique key , book_title = 'greek zorba' , book_price = 20000 , book_location = '종로' , book_author = '니코스 카잔차키스' ON DUPLICATE KEY UPDATE book_title = 'greek zorba' , book_price = 20000 , book_location = '종로' , book_author = '니코스 카잔차키스' | cs |
만약 book_seq에 1000이라는 값에 이미 다른 데이터가 있다면
지금 주입하려는 값으로 대신 UPDATE가 되는 것이다.
더 다른 방법으로도 쓸 수 있는데 다른 방법이 궁금하다면
여기로 들어가면 된다!