2013-02-22 2 views
4

내 질문을 구성하는 가장 좋은 방법이 무엇인지 모르겠습니다.SQL Server : 외래 키를 특정 값으로 설정

테이블에 외래 키 열이 있습니다. 기본적으로 외래 키는 NOT NULL으로 설정되어 있으며,이 방법이 현재 최종 결과가 될 수 있으므로이 방법을 계속 사용하고 싶습니다. 그러나 지금은 외래 키 값을 필요로하지 않는 (그리고 가지고있는) 레코드가있을 수 있습니다. 나는이 레코드를 어떻게 든 구별하고 싶습니다. 그래서이 레코드가 다른 레코드와 다른 것이 분명합니다.

나는 시도했지만 그것은 내 SQL Server 테이블에서 외래 키의 값인 bigint에 대해 음수를 사용할 수없는 것으로 보입니다. 나는 이것이 꽤 표준적인 물건이라고 생각한다. 외장 키를 NULL으로 만드는 것 외에이 상황에서 가장 좋은 것은 무엇인가?

+0

가'허용 NULL's 또는 "미정"라고 관련 테이블에 행을 추가하고 해당 키를 사용합니다. – HABO

+0

최종적으로 외래 키가 필요할 것이라고 확신하기 때문에 다시 디자인하고 싶지 않습니다. 나는 프로그래밍 중에 도달하지 못하는'6000'과 같은 디폴트 값을 설정할 수 있지만, 나에게는 다소 이상한 것처럼 보인다. 더 나은 접근법이 있다고 생각한다. – Leron

+0

그래서 열에 두 개의 제약 조건 ('NOT NULL'과 외래 키)이 있으며 이러한 제약 조건을 만족하지 않는 값을 삽입하는 방법을 묻는 중입니까? –

답변

3

HABO가 대답을하지 않은 이유는 확실하지 않습니다. 왜냐하면 그것이 유일한 옵션이기 때문입니다.

  1. 이 NULL
  2. 참조 된 테이블의 행을 만들고 확인하고 TBD로 설정이든 모니 커 당신이 선호하고 당신이 기록이있는 경우 그 대신 NULL

에서 ID를 사용 FK를 필요로하지 않으며 절대로하지 않으려면 열을 NULL로 설정하고 그렇지 않으면 임시 값을 사용해야합니다.

외래 키 제약 조건이있는 경우 반드시 외부 테이블의 내용을 참조해야하기 때문에 음수 값을 사용할 수 없습니다.

+0

Mike가 암시하는 문법적인 은유를 그려내는 방법은 다음과 같습니다. Foreign Key NULL -> "Might have". 외래 키 NOT NULL -> "반드시 가져야합니다." –

1

외래 키 제약은 다른 테이블의 기존 PK를 참조하도록합니다. 아직 언급되지

한 가지 방법은 지금은 제약 조건을 삭제하는 것입니다

ALTER TABLE YourTable 
    DROP CONSTRAINT fk_something 
관련 문제