2016-08-25 5 views
0

테이블 S에 대한 외래 키를 생성하는이 코드가 있습니다. 현재 내가 원하는 것은 fn 인 컬럼은 bigint이고 null이 아니며 기본값은 0입니다. 이것이 장애물입니까? StoredFile 열 id가 null이 아니며 bigint 데이터로 채워집니다. FK를 추가하기 위해ALTER TABLE 문이 FOREIGN KEY 제약 조건과 충돌했습니다. sql

alter table P add constraint fk_fileId_p foreign key (fileID) 
    references Ss(id) 
+0

외래 키를 만들려는 열의 기본값은 무엇입니까? 테이블 디자인에 결함이있는 것 같아요. 외래 키를 작동시키기 위해서 기본값을 가진 참조 테이블에 더미 레코드를 만들어야하기 때문입니다. 또한이 테이블에 삽입하는 모든 새 레코드는이 더미 레코드에 연결됩니다. 그게 니가 원하는거야? – GuidoG

+0

예. 부모 테이블이 업데이트되면 하위 테이블도 업데이트 할 수 있기를 원합니다. – Jokes1994

+0

Jokes1994 나는 그게 무슨 뜻인지 이해하지 못합니다. 외래 키는 어떤 식 으로든 하위 테이블을 업데이트하지 않습니다. 여기서 무엇을하려고합니까? – GuidoG

답변

2

, 당신은 (예를 들어, 더미 레코드를 추가하여) storefileID 0 표 StoredFile에 있는지 확인해야합니다 - 그렇지 않으면 FK 검증이 실패하고 제약 조건을 만들 수 없습니다.

+0

기본값이 없으면 열을 생성하는 alter table이 기본값 인 – Jokes1994

+0

이 있어야한다는 오류를줍니다. 이것이 이유입니다 당신은 ID 0 ... 더미 레코드를 추가해야합니다. 당신은 그것을 필터링 할 수 있습니다/그것을 표시하는 방식을 변경하지만, 당분간 FK를 사용하기 위해서는 더미 레코드가 필요합니다. – Tyron78

관련 문제