Database

(MySQL) Unique Index로 컬럼에 중복값이 못들어오도록 하려면..

쿠카이든 2022. 3. 21. 10:51
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