보통 게시물 추천을 누를 시, db의 테이블에 해당 게시물의 고유 넘버와 추천을 누른 사람의 아이디나 익명일 경우 아이피를 저장한다. 그리고 보통 해당 유저는 해당 게시물에 추천을 한번씩만 할 수 있게 한다.

 

그럴 경우 게시물의 고유 넘버인 post_no && 해당 게시물을 누른 유저 user_id 이렇게 두개의 컬럼값이 중복된 row가 있을 경우, 더이상 db에 저장을 할 수 없도록 한다. 그럴 경우 어떻게 해야 할까?

 

Insert IGNORE 문은 이를 해결하지 못했다. IGNORE문은 PK 값이 Unique 일 경우에만 적용이 된다. 다른 컬럼이 중복일 경우에는 적용이 되지 않는다.

 

그래서 나는

Insert + NOT EXIST

이걸 이용하기로 하였다.

 

이 SQL문은 넣고자 하는 Data를 이미 포함하지 않는, 즉 중복되지 않도록 하는 DUAL 이라는 임의의 Table을 통해 중복을 제거하여 Insert문을 실행하도록 한다.

 

DUAL Table 이란?

DUAL Table이란  실제 Table에 존재하지 않는 Data 혹은 임의의 계산 결과를 출력할 때 사용하는 임의의 Table

 

 

 

프로젝트에 적용해 보았다.

 

 

추천 버튼을 누를시 해당 유저는 해당 게시물에 한번만 추천을 할 수 있다.

 

 

db를 확인해보면 중복된 값 없이 저장되어 있는 걸 확인할 수 있다.

+ Recent posts