에서 NULL 값 나는 다음과 같은 테이블 (간체)있어했습니다PostgreSQL을 내 PostgreSQL 데이터베이스에서 외래 키 열
이CREATE TABLE quotations ( receipt_id bigint NOT NULL PRIMARY KEY ); CREATE TABLE order_confirmations ( receipt_id bigint NOT NULL PRIMARY KEY fk_quotation_receipt_id bigint REFERENCES quotations (receipt_id) );
내 문제는 이제 다음 읽습니다 :
내가 관련 주문이 이전의 견적 (이것은 FK 필드를 사용하여 인용 된 견적에 그러한 주문을 첨부 할 수 있기 때문에 괜찮습니다.) 과 일치하는 견적이없는 주문도 있습니다. 물론 FK 필드는 NULL이 될 것입니다. 데이터베이스를 사용하면 물론입니다. 불행히도 이 외부 키 제약을 위반했기 때문에 fck_quotation_receipt_id를 INSERT 문에서 NULL로 설정하려고 시도 할 때 오류이 발생합니다.
이 테이블을 디자인 할 때 나는 여전히 NULL 값을 허용하는 PgSQL 8.2를 사용하고있었습니다. 이제는 9.1.6을 얻었습니다.
선택 사항 (또는 null 입력 가능) 외래 키 제약 조건 order_confirmations (fk_quotation_receipt_id) → 인용문 (receipt_id)입니다. 나는 공식 PgSQL 문서에서 어떤 힌트도 찾을 수 없으며, uther 사용자가 게시 한 비슷한 문제는 이미 꽤 오래되었다.
유용한 힌트를 제공해 주셔서 감사합니다.
누락 된 쉼표는 문제가되지 않는다 (나는 grrrrr을 복사 할 때 간단히 잊었다). 클라이언트 코드가 NULL 대신 0을 추가 한 것으로 밝혀졌습니다. 그리고 이것은 준비된 명령문 이었기 때문에 로그에서 볼 수 없었습니다. 그럼에도 불구하고 당신의 대답에 대해 많이 고맙습니다. – Neppomuk