INSERT ... ON DUPLICATE KEY UPDATE의 조건부 업데이트
MySQL에서 INSERT ... ON DUPLICATE KEY UPDATE 구문은 다음을 허용합니다. 삽입 작업 중에 중복 키가 발견되면 테이블 데이터가 자동으로 업데이트됩니다. 그러나 쿼리의 UPDATE 부분은 조건부 업데이트를 지정하기 위한 WHERE 절 사용을 지원하지 않습니다.
IF()를 사용한 해결 방법
이 제한을 극복하려면 IF() 함수를 활용하여 ON DUPLICATE KEY UPDATE 절 내에서 조건부 업데이트를 구현할 수 있습니다. IF() 함수는 조건을 평가하고 결과에 따라 다른 값을 반환합니다.
예를 들어 다음 INSERT ... ON DUPLICATE KEY UPDATE 문을 고려하세요.
INSERT INTO daily_events (created_on, last_event_id, last_event_created_at) VALUES ('2010-01-19', 23, '2010-01-19 10:23:11') ON DUPLICATE KEY UPDATE last_event_id = IF(last_event_created_at이 문에서 IF() 함수는 데이터베이스 테이블의 last_event_created_at 열 값이 값이 삽입됩니다(VALUES(last_event_created_at)). true인 경우 insert 문의 새 값으로 last_event_id 열을 업데이트합니다. 그렇지 않으면 기존 값을 변경하지 않고 그대로 둡니다.
이 해결 방법을 사용하면 복제에 적합하지 않을 수 있는 INSERT/UPDATE/SELECT 쿼리 조합을 사용하지 않고 INSERT ... ON DUPLICATE KEY UPDATE 문에서 조건부 업데이트를 허용합니다. 시나리오.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3