[MYSQL] 특정 유니크값 지정 관련 질문 있습니다!
본문
OPTION
id | subject |
1 | 안녕 |
2 | 우리집 |
OPTION_DEVICE
id | option_id | type | |||
1 | 1 | korea | |||
2 | 1 | usa | |||
3 | 2 | usa | |||
4 | 2 | uk |
type => enum('korea', 'usa', 'uk');
안녕하세요 선배님
우선 저위에 2개 테이블 option, option_device이 있습니다.
option 테이블이 부모고 option_device이 자식 테이블입니다.
option 테이블 id값이 option_device테이블의 option_id값으로 매칭되고
ONE TO MANY 구조로 되어 있습니다.
option_device의 enum으로 'korea', 'usa', 'uk' 3개가 있습니다.
여기서 조건이 있습니다.
만약 option을 등록시 type( 'korea', 'usa', 'uk' )을 원하는 타입을 선택한다면
option 테이블에 row가 추가되고 서로 매칭 되면서 option_device 테이블에 선택한 타입에 각각 insert가 되는 구조 입니다.
조건이 이라면
1. 해당 option의 id값이 즉 option_device테이블에 option_id값들이 type 갯수 만큼 3개 이상 추가가 되면 안되고
2. 해당 option의 id값이 즉 option_device테이블에 option_id값들이 중복 type 값들이 있으면 안됩니다.
MYSQL에서는 이런 기능이 있는건가요?
만약 있다면 어떻게 구현을 해야 할까요?
소스상으로는 INSERT시 이 2가지 유효성 검사를 분명히 하고 있습니다.
제가 원하는 것은 자체적으로 MYSQL에서 INSERT시 에러를 나타날수 있도록 옵션값 추가 입니다 ㅠ,ㅠ
선배님들 조언 부탁드립니다.
감사합니다.
답변 2
OPTION_DEVICE 테이블에 option_id, type을 UNIQUE KEY 로 잡으면
(option_id와 type를 합해서 UNIQUE KEY로 잡는다는 말임)
option_id 가 1이라고 가정할 떄
1 korea 정상입력
1 usa 정상입력
1 uk 정상입력
1 usa 키오류로 입력되지 않음
1 korea 키오류로 입력되지 안음
1 uk 키오류로 입력되지 않음
맥시멈 3줄까지만 입력된다는 말입니다.
일단 OPTION_DEVICE 테이블에
option_id 와 type을 UNIQUE KEY 로 잡으시면 되지 않나요??
type의 갯수만큼만 row가 들어가겠네요
만약에 타입이 4가지라면 4개까지만 들어갈것 같아요