[MariaDB] INSERT ON DUPLICATE KEY UPDATE (ORACLE의 merge into 와 비슷한 기능)

개발者·2022년 1월 17일
0

MariaDB

목록 보기
2/2

테이블에 만약 값이 존재하지 않는다면 삽입하고, 존재한다면 업데이트 하라.

  • INSERT ... ON DUPLICATE KEY UPDATE는 INSERT 문의 확장이다. 만약 unique나 primary 키를 찾는다면 업데이트를 수행해라.

  • API의 CLINT_FOUND_ROWS flag가 설정되어 있찌 않는다면, 삽입을 한경우 1, 업데이트를 한 경우 2가 리포트 될 것이다.

  • 만약 하나 이상의 고유 인덱스가 일치하면 첫 번쨰 인덱스만 업데이트 된다. 둘 이상의 고유 인덱스가 있는 테이블의 경우 사용하지 않는 것이 좋다.

  • 테이블에 AUTO_INCREMENT primary 키가 존재하고 INSERT하거나 UPDATE하면, LAST_INSERT_ID() 함수는 AUTO_INCREMENT 값을 반환한다.

  • VALUES() 함수는 ON DUPLICATE KEY UPDATE 절에서만 사용할 수 있으며 다른 컨텍스트에서는 의미가 없다. INSERT 부분에서 컬럼 값을 반환한다. 이 기능은 다중 행 삽입에 특히 유용하다.

  • ON DUPLICATE KEY UPDATE 사용시 IGNORE와 DELAYED 옵션은 무시된다.

INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
    ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

Reference

profile
solrasido

0개의 댓글