
보통 게시물 추천을 누를 시, 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를 확인해보면 중복된 값 없이 저장되어 있는 걸 확인할 수 있다.
'프로젝트(영화커뮤니티)' 카테고리의 다른 글
| 7. Request method 'GET' not supported 해결 (0) | 2023.12.04 |
|---|---|
| 6. 추천 수 JOIN 방법 & 서브쿼리 컬럼 값을 DTO에 담기 (0) | 2023.11.30 |
| 4. 댓글 이미지 집어넣기 : MultipartFile, formData (0) | 2023.11.28 |
| 3. 댓글 이미지 집어넣기 : SELECT LAST_INSERT_ID() (0) | 2023.11.28 |
| 2. 팝업창 이용 방법 (0) | 2023.11.23 |