728x90
- PK 컬럼말고 따로 고유 값을 받아야 하는 컬럼이 있을 때
- -> 유니크 인덱스(Unique Index)로 유니크 컬럼을 만들면 된다.
- 찾아보니 방법은 두가지가 있다.
매 쿼리문에서 방지 - 'where not exists' (비추천)
INSERT INTO BOARD_LIKE (BOARD_IDX, USER_IDX)
VALUES (11, 13)
WHERE NOT EXISTS
(SELECT BOARD_LIKE_IDX FROM BOARD_LIKE WHERE BOARD_IDX = 11 AND USER_IDX = 13)
컬럼 속성 설정 (추천하는 방식)
- 중복되면 안되는 컬럼 조합을 UNIQUE INDEX로 설정한다.
- UNIQUE INDEX
ALTER TABLE BOARD_LIKE ADD UNIQUE INDEX (USER_IDX)
- USER_IDX에 같은 값을 넣은 결과
- ConstraintViolationExeption 에러가 발생(중복 값을 넣을 수 없음)
728x90
'Database' 카테고리의 다른 글
(DB 구조) 마스터-슬레이브 구조 (0) | 2022.10.14 |
---|---|
INNER JOIN, LEFT JOIN, RIGHT JOIN의 차이 (0) | 2022.07.17 |
MySQL 랜섬웨어 후 대처법(Z_README_TO_RECOVER) (0) | 2022.07.15 |
[MySql] Cannot delete or update a parent row: a foreign key constraint fails 에러 해결 방법 (0) | 2022.03.18 |
Communications link failure 에러(MySQL) (0) | 2022.03.15 |