2개의 컬럼의 중복 값 제약 조건을 걸고 싶습니다. 0 5 1,126

by 너부리주름살 [Oracle 기초] [2022.09.16 14:07:17]


c1,c2 를 한번에 유니크 제약을 하면 2값이 조합에 대해서 유니크 값이어서

1,2

1,3 이 들어갑니다.

 

질문의 

1,2

1,3 이 들어가면 안됩니다. 이유는 c1 1의 1이 중복이기 떄문입니다.

 

1,2

3,1 이 들어가면 안됩니다. c1 c2 1이 중복이기 떄문입니다.

 

1.2

3,4

5,6

이런 식으로 들어갔으면 좋겠습니다,

 

유저가 카드값을 2개 가지고 있는데 2개 카드값의 중복을 방지하고 싶습니다.

제가 아예 db를 잘못쓰는건지....

by 우리집아찌 [2022.09.16 15:18:48]

채번 테이블을 만드셔서 쓰셔야할것 같은데요.


by 호랑아 [2022.09.18 16:26:34]

오라클을 쓰신다면 Sequence사용을 추천드립니다.


by 포동푸우 [2022.09.19 06:54:55]

1~6 등이 예시로,, 카드값 (카드 번호 16자리) 인 거지요 ?   

각 카드번호가 중복되지는 않을 테니, col1, col2 2개로 PK 를 만들면 될 것 같네요,, 

( 카드번호니 1,2 다음에 1,3 이 오는 경우는 없을 것 같은데요 ? ) 


by 마농 [2022.09.19 08:26:06]

DB 의 제약을 사용하려면 2개 컬럼으로는 안되고 1개 컬럼으로 관리해야 합니다.(2줄 입력)
2개 컬럼으로 해야 한다면 DB 레빌이?아닌 어플리케이션 레벨에서 제약관리 하셔야 합니다.
그리고 "유저"라는 표현이 등장하는데?
유니크 그룹이 유저별인지? 전체인지? 하는 부분도 따져봐야 할 것 같습니다.


by 마농 [2022.09.19 09:27:33]

별도의 테이블과 트리거를 이용하여 제약설정 하는 방안
1. 카드번호가 유니크한 테이블을 별도로 하나 만들고
2. 테이블에 자료가 1건 입력될 때 1번의 테이블에 2건의 카드번호를 입력하게 하는 트리거 작성

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입