MySQL에서 중복검사를 할 때, 쿼리 결과를 통해 검사를 해왔다.
하지만 이러한 과정을 쿼리 하나로 끝낼 수 있다.
이번 포스팅은 검사후 중복이 아닐 경우에 삽입, 중복일 경우에 업데이트를 하는 쿼리문에 관련된 내용이다.
insert 구문에 on duplicate key update (값) 이 들어가면 위에서 설명한 행동을 취하게 된다.
단 unique한 컬럼이 존재해야 해당 컬럼으로 중복비교가 가능하다는 필수조건이 있다.
우선 아래와 같이 테이블을 만들어보자
1 | create table inorup(no int, name varchar(15)); | cs |
여기서 on duplicate key update가 작동하기 위해선 unique 성질이 필요한데 하는데, no에 부여해보자
1 | alter table inorup add unique(no); |
desc inroup을 통해 확인해보면 no 컬럼에 unique 성질이 부여된 것을 확인할 수 있다.
이제 쿼리문을 날려보자
1 | insert into inorup values(1,"g0pher") on duplicate key update no=1 name="REg0pher"; | cs |
해당 쿼리문을 첫번째로 전송하면 1, "g0pher"가 들어가게 된다.
하지만 두 번째로 전송하게 되면 no가 1인 데이터가 이미 존재하므로 update가 되어 REg0pher로 name이 바뀌게 된다.
'Study > web' 카테고리의 다른 글
MySQL :: Every derived table must have its own alias (1) | 2018.08.02 |
---|---|
HTTP request Brute Force Attack (0) | 2017.07.27 |
SQLinjection공격 (0) | 2017.07.27 |
OWASP Top 10 - 2017 (2) | 2017.07.06 |
OWASP란? (0) | 2017.07.06 |