본문으로 바로가기

[MYSQL] DUPLICATE KEY

category Helloworld!/MySql 2013. 9. 26. 11:51
프로그램을 짜다보면 새로운 정보일 경우 데이터를 INSERT하고, 이미 기존에 데이터가 저장되있는 정보일 경우 UPDATE를 하는 코딩을 짜는 경우가 많다.
저런 경우 코딩을 다음과 같이 IF문을 사용해 데이터가 없으면 INSERT문을 실행하고
있으면 UPDATE문을 실행하도록 짰었다.
$data = "SELECT ~~~~"; // 우선 SELECT문으로 데이터가 있는지 검사
if(empty($data)){ //데이터가 비여있으면
   $sql = "INSERT ~~~~";
}else{
   $sql = "UPDATE ~~~~";
}
하지만 INSERT 문에 ON DUPLICATE KEY UPDATE를 추가하면 UNIQUE 인덱스 또는 PRIMARY KEY 제약 조건이 설정된 컬럼에 중복된 값이 삽입되는 상황에서 에러를 출력하지 않고 새로운 값으로 갱신할 수 있다.
ON DUPLICATE KEY UPDATE 절은 INSERT 또는 UPDATE에 대한 트리거가 활성화된 테이블에 대해서는 사용할 수 없으며, 중첩된 INSERT 문에서도 사용할 수 없다.

ex)
INSERT INTO a_tbl3 VALUES(2, 'bbb', '222-2222')
ON DUPLICATE KEY UPDATE phone = '222-2222';


출저 : http://blog.naver.com/hanjshanjs?Redirect=Log&logNo=110161037477