2014-09-10 2 views
0

기본 키와 외래 키에 관해 수많은 질문이 있습니다. 그들을 통해 보면 내 질문에 대한 간단한 대답을 찾지 못하는 것 같습니다. 기본 키와 외래 키에 대한 이해는 외래 키가 부모 테이블의 기본 키로 참조되는 자식 테이블에서 지정된 열이라는 것입니다. 그게 맞습니까? 아니면 거꾸로 가지고 있습니까? 즉 실제로 올 경우에, 나는 왜 데 어려움이 같은 자식 테이블에서 외래 키를 생성을 찾기 위해 노력하고 있어요 :자식 테이블과 외래 키

salesorders.sonumber (PK) < customer.sonumber (FK)

I (MySQL과 동일) Navicat을 사용하여 MySQL과 동일한 오류가 발생했습니다.

1452 - 자식 행을 추가하거나 업데이트 할 수 없습니다. 외래 키 제약 조건 ('customer_orders', '# sql7a8_3'; CONSTRAINT 'sonumber' 참조 'salesumber'('sonumber') ON 업데이트 캐스케이드에 아무 작업도하지 않음

고객 _ 또는 ders는 데이터베이스 이름입니다. 하위 테이블 (고객)과 상위 테이블 (판매점)의 열 이름과 동일한 외래 키 '하위 번호'의 이름을 지정합니다. 그게 잘못된거야? 외래 키에 다른 이름을 부여해야합니까?

gitpicker

+0

(사실 나는 mySQL 또는 Navicat에 익숙하지 않기 때문에) 모르겠지만 제약 조건의 이름은 테이블의 필드와 같은 이름을 가질 수 없다고 생각됩니다. 외래 키 제한 이름 앞에 "fk_"를 넣으십시오. 즉 CONSTRAINT 'fk_sonumber'FOREIGN KEY. 또는 전형적인 스타일은 외래 키 fk_CHILDTable_PARENTTable의 이름을 지정하는 것입니다. 즉 fk_SALESORDERS_CUSTOMER – laughsloudly

답변

0

외부 키는 예, 자신의 고유 한 이름이 있어야합니다. sonumber_fk 또는 비슷한 이름이 간단한 명명 스키마입니다.

또한 외래 키 열의 모든 항목에 참조 테이블에 해당 항목이 있는지 확인해야합니다. 그렇지 않으면 외래 키를 만들 수 없습니다.