INSERT ... ON DUPLICATE KEY UPDATE: 조건부 업데이트
INSERT ... ON DUPLICATE KEY UPDATE 작업을 수행할 때, 특정 조건에 따라 조건부로 업데이트를 실행해야 하는 경우가 있습니다. 그러나 이 문의 UPDATE 부분에는 WHERE 절을 사용할 수 없습니다.
IF()를 사용한 해결 방법
조건부 업데이트를 수행하려면 다음을 활용하는 것이 좋습니다. IF() 함수. IF() 표현식 내에서 조건을 평가하면 결과에 따라 업데이트된 열에 대해 다른 값을 지정할 수 있습니다.
예
다음 표를 고려하세요.
CREATE TABLE daily_events ( created_on DATE, last_event_id INT, last_event_created_at DATETIME );
last_event_created_at 열이 변경된 경우에만 last_event_id 열을 조건부로 업데이트하려면 다음 쿼리를 사용할 수 있습니다.
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 < VALUES(last_event_created_at), VALUES(last_event_id), last_event_id);
이 쿼리에서 IF() 함수는 다음을 확인합니다. 데이터베이스의 last_event_created_at 값이 삽입되는 값보다 작습니다. true인 경우 last_event_id가 삽입된 값으로 업데이트됩니다. 그렇지 않으면 기존 값이 유지됩니다.
복제 호환성
이 접근 방식은 데이터베이스 스키마에 대한 추가 쿼리나 수정이 필요하지 않으므로 복제와 호환됩니다.
위 내용은 중복 키 업데이트 문에서 INSERT...에서 조건부 업데이트를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!