본문 바로가기
News & Resources

MySQL에서 ON DUPLICATE KEY UPDATE 구문 실행하기

by 대소니 2024. 12. 30.

 

MySQL에서 ON DUPLICATE KEY UPDATE 구문은 강력한 도구입니다. 중복 키가 발생할 경우, 새로운 데이터를 INSERT 하는 대신 기존 레코드를 UPDATE 해 줍니다. 이렇게 하면 중복 항목을 방지하고 데이터의 무결성을 유지할 수 있습니다.

하지만 이 구문에는 한 가지 주의할 점이 있습니다. created_at과 같은 생성 시간 필드는 기본적으로 업데이트되지 않습니다. 새로운 데이터를 INSERT하는 상황이 아니기 때문이죠.

이 글에서는 ON DUPLICATE KEY UPDATE 구문을 활용해 created_at 필드도 업데이트하는 방법을 알아보겠습니다. 필요할 때만 정확히 동작하도록 만들어 데이터 관리에서 한 단계 더 앞서 가세요.

핵심은 간단합니다:

  1. created_at 필드를 명시적으로 설정: 중복이 발생하더라도 이 필드를 업데이트하도록 쿼리를 작성합니다.
  2. NOW() 함수 사용: 현재 시간을 동적으로 반영하여 정확성을 높입니다.

다음 절에서 이를 구현하는 방법을 단계별로 살펴보겠습니다. 데이터베이스 관리 효율성을 한층 끌어올리고 싶은 분들이라면 끝까지 읽어보세요!

 

MySQL에서 ON DUPLICATE KEY UPDATE 구문 실행하기

 

ON DUPLICATE KEY UPDATE 구문을 사용할 때, 중복 키 발생 시 created_at 필드를 현재 시간으로 업데이트하려면 아래와 같은 쿼리를 작성하면 됩니다.

SQL 코드

 
String query = "INSERT INTO COMMON_CD (main_cd, cd, cd_name, created_at) " +
               "VALUES (?, ?, ?, now()) " +
               "ON DUPLICATE KEY UPDATE cd = VALUES(cd), cd_name = VALUES(cd_name), created_at = now()";

 

쿼리 변경 내용

기존의 쿼리에서 ON DUPLICATE KEY UPDATE 부분에 created_at = now()를 추가해 이를 통해 중복 키가 발생하면 created_at 필드가 현재 시간으로 갱신됩니다.

 

ON DUPLICATE KEY UPDATE 구문의 특징

  1. 중복 키 처리
    • 이 구문은 PRIMARY KEY 또는 UNIQUE KEY 제약 조건을 위반하는 값이 삽입될 경우, 새로운 행 대신 기존 행을 업데이트합니다.
    • 중복된 키를 발견하면 UPDATE 구문이 실행됩니다.
  2. 영향받은 행의 수
    • 새로운 행이 삽입되면 affected-rows 값은 1을 반환합니다.
    • 기존 행이 업데이트되면 affected-rows 값은 2를 반환합니다.
  3. AUTO_INCREMENT와의 동작
    • 테이블에 AUTO_INCREMENT가 설정된 경우, 이 구문을 통해 삽입 또는 업데이트 시 LAST_INSERT_ID()는 해당 AUTO_INCREMENT 값을 반환합니다.
  4. 효율성
    • 이 구문은 별도의 SELECT와 INSERT/UPDATE 작업을 수행하는 것보다 더 효율적입니다. 데이터베이스 작업의 성능을 최적화할 수 있습니다.

 

주의 사항

  1. 다중 UNIQUE KEY 환경에서의 제한
    • 테이블에 여러 개의 UNIQUE INDEX가 설정된 경우, 이 구문은 첫 번째로 발견된 인덱스만 처리합니다.
    • 따라서, 여러 개의 UNIQUE KEY가 있는 경우 이 구문 사용을 신중히 검토해야 합니다.
  2. 데이터 무결성
    • 업데이트 시 의도하지 않은 필드가 변경되지 않도록 쿼리를 꼼꼼히 검토해야 합니다.

 

핵심 전략

중복 키 충돌 시, created_at = NOW()를 사용하여 created_at 필드를 현재 시간으로 업데이트하면 데이터의 일관성을 유지할 수 있습니다. 이를 통해:

  1. 중복된 데이터 입력을 효율적으로 처리할 수 있습니다.
  2. 데이터의 무결성을 보장할 수 있습니다.
  3. 데이터베이스 관리와 성능을 한 단계 업그레이드할 수 있습니다.

 

이 구문은 데이터 무결성을 유지하고 효율적인 데이터 관리를 가능하게 하는 강력한 도구입니다. 개발자와 데이터베이스 관리자는 이러한 기술을 이해하고 활용하여 데이터베이스의 성능과 안정성을 향상할 수 있습니다.

 

댓글