본문 바로가기

프로그래밍/mysql

아직도 select 해보고, 없으면 insert, 있으면 update 하시나요?

반응형

보통 db에 값을 변경해야 할때 위 제목과 같은 상황이 많이 발생하는데요.


아주 비효율 적이고, 성능에도 좋지 않습니다.


select ....


if(count > 0)

{

update ...

}

else

{

insert ....

}


뭐 대충 이런식으로 개발을 많이 하셨다면 앞으로는 신경 쓰지말고 그냥 insert Query 하나만 실행하시길....


방법은 이렇게 하시면 됩니다.


INSERT … ON DUPLICATE KEY UPDATE

 

ON DUPLICATE KEY UPDATE는 유니크 인덱스 또는 프라이머리 키와

중복되는 경우 인서트 대신 업데이트를 수행하게 된다

   REPLACE와 다른 점은 이전 값이 유지되는 상태에서 지정된

    칼럼의 값만이 변경된다는 것이다

 

mysql> INSERT INTO CountryCopy (Code, Name)

    -> VALUES ('OZ', 'Republic of Oz')

    -> ON DUPLICATE KEY UPDATE

    -> Code = 'OZ', Name = 'Republic of Oz';

Query OK, 2 rows affected (0.03 sec)


반응형