외래키 설정 1 4 1,938

by 후니훈 [Oracle 기초] 외래키 [2015.10.30 19:34:12]


안녕하세요. 외래키 설정 관려해서 궁금한 점이 있어 질문합니다.

새로운 테이블이 아닌 기존에 존재하는 테이블간에 외래키 설정을 위해

아래와 같이 작성 했는데 오류가 발생하네요.

테이블 구조는 고객테이블1에는 회사코드, 고객번호1이 있고 둘다 기본키로 설정되어 있으며 여러건의 데이터가 존재합니다.

고객테이블2에는 회사코드, 고객번호2, 고객번호1이 있고 회사코드와 고객번호2가 기본키로 설정 되어 있으며 역시 데이터가 존재하는 테이블입니다.


ALTER TABLE 고객테이블2 ADD
 (
     CONSTRAINT FK_고객
     FOREIGN KEY (회사코드, 고객번호1)
     REFERENCES 고객번호테이블1(회사코드, 고객번호1)
 );

고객테이블2에서 고객테이블1을 참조할때 참조하려는 고객번호1이 고객테이블2에서 중복으로 존재하면 안되는 건가요?

중복된 데이터를 제거하면 정상적으로 외래키 설정이 됩니다.

외래키도 중복 데이터가 있으면 설정이 안되는지 궁금합니다.

by 거제도원주민 [2015.10.30 20:12:43]

 

foreign key는 참조하고자 하는테이블의 primary key나 unique key인 경우만 가능합니다.

그러므로 중복이 있을 수는 없습니다.

그런데 중복이 된다는것은 primary key나 unique key로 설정이 되지 않은거 같습니다.확인해 보시기 바랍니다.

 

 

 


by 후니훈 [2015.10.30 22:57:07]

참조하려고 하는 기준테이블의 필드만 기본키로 잡혀 있으면 되는거 아니였나요?

제가 잘못알고 있는건지... ㅠ.ㅠ

풀릴듯 말듯 풀리지가 않네요

 


by 거제도원주민 [2015.10.31 09:21:16]

 이미 발생된 데이타를 근간으로 하여 생각해 보시면 됩니다.

고객테이블2에는 회사코드, 고객번호2, 고객번호1 가 primary key로 설정이 되어 있다면 이미 고객테이블2에 발생한데이타에는 고객테이블1에 존재하지 않은 데이타가 발생되어 있고 foreign key를 생성할려고 하니 안되는 겁니다.

고객테이블2에 고객테이블1에 존재하는 primary key값인  회사코드, 고객번호1 만 존재하여야 된다는 말입니다.

 


by 후니훈 [2015.10.31 12:11:44]

이제 이해했네요, ㅎ

도움 주셔서 감사합니다!

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