2014-10-18 4 views
0

변경 테이블 주거 제한 추가 pk_restype 기본 키 (고객 ID) 참조 고객 (고객 ID);ORA-01735 기본 키와 외래 키

'주거용'테이블에 기본 키 제약 조건을 설정하고 싶지만 "ALTER TABLE 옵션이 잘못되었습니다"라는 ORA-01735 오류가 나타납니다. 또한 외래 키 관계를 만들기 위해 다음을 시도했지만 동일한 오류 코드로 표시됩니다.

변경 테이블 주거 제한 추가 fk_restype 외래 키 (customerID, customertype) 참조 고객 (customerID, customertype);

답변

0

기본 키를 외래 키처럼 생성하고 있습니다.

적절한 PK 구문은 다음과 같습니다

alter table residential add constraint pk_restype primary key (customerID); 

없음 참조 절은 외래 키에, 기본 키에 허용되지 않습니다.

PK는이 열 customerID이 고유하며 residential 테이블에서 고유 한 행을 식별한다고 말합니다. 다른 테이블을 참조하는 것과 아무런 관련이 없습니다.

FK은 다음과 같습니다

alter table tab_child add constraint fk_child FOREIGN key (child_id) 
    REFERENCES tab_parent(id); 

FK 테이블 tab_child의 열 child_idtab_parent

+0

기본 키 작동하지만 외부 키 구문을 참조하고 테이블에 열 id에 의해 제약을 말한다 ORA-02298 "유효하지 않습니다 (% s. % s) - 상위 키를 찾을 수 없습니다"- 테이블에 하위 레코드가 있기 때문에 ALTER TABLE 유효성 검사 제약 조건이 실패했습니다. 부모 키에 대한 PK가 이미 설정된 경우 – pooch

+0

외래 키의 포인트입니다. 오류의 일부를 인용했으나 가장 중요한 부분은 생략했습니다. 'ORA-2298'은 '부모 키를 찾을 수 없습니다.'입니다. 상위 열에는 키 열의 값이없는 하위 레코드가 있습니다. 외래 키가 무엇인지 이해하지 못합니까? 하위 레코드에는 상위 레코드가 있어야합니다. 기본적으로 제한 조건에 유효하지 않은 데이터에 대해서는 외래 키를 사용할 수 없습니다. 데이터를 먼저 수정하십시오. – codenheim

+0

OK. 알았어, 고마워. – pooch