FOREIGN KEY 제약 조건 만들기 및 수정

테이블을 만들 때 테이블 정의의 일부로 FOREIGN KEY 제약 조건을 만들 수 있습니다. 테이블이 이미 있으면 FOREIGN KEY 제약 조건을 추가할 수 있습니다. 단, 다른 테이블이나 같은 테이블의 기존 PRIMARY KEY 또는 UNIQUE 제약 조건에 FOREIGN KEY 제약 조건을 연결해야 합니다. 한 테이블에 여러 개의 FOREIGN KEY 제약 조건이 있을 수 있습니다.

FOREIGN KEY 제약 조건이 이미 있으면 해당 제약 조건을 수정하거나 삭제할 수 있습니다. 예를 들어 테이블의 FOREIGN KEY 제약 조건이 다른 열을 참조하도록 할 수 있습니다. 그러나 FOREIGN KEY 제약 조건이 정의된 열의 길이는 변경할 수 없습니다.

[!참고]

FOREIGN KEY 제약 조건을 수정하려면 먼저 기존 FOREIGN KEY 제약 조건을 삭제하고 새로운 정의를 사용하여 다시 만들어야 합니다.

외래 키 열과 다른 테이블의 관련 기본 키 또는 UNIQUE 제약 조건 열 간에 참조 무결성을 적용하지 않으려면 FOREIGN KEY 제약 조건을 삭제합니다.

테이블을 만들 때 FOREIGN KEY 제약 조건을 만들려면

CREATE TABLE(Transact-SQL)

기존 테이블에서 FOREIGN KEY 제약 조건을 만들려면

ALTER TABLE(Transact-SQL)

방법: 테이블 간의 관계 만들기(Visual Database Tools)

FOREIGN KEY 제약 조건을 삭제하려면

ALTER TABLE(Transact-SQL)

WITH NOCHECK를 사용하여 FOREIGN KEY 제약 조건 적용

테이블의 기존 열에 FOREIGN KEY 제약 조건이 추가되면 기본적으로 데이터베이스 엔진에서 열의 기존 데이터를 검사하여 NULL 이외의 모든 값이 참조되는 PRIMARY KEY 또는 UNIQUE 제약 조건의 행에 있는지 확인합니다. 그러나 WITH NOCHECK를 지정하면 데이터베이스 엔진에서 새 제약 조건에 대해 열의 데이터를 검사하지 않고 열의 데이터에 관계없이 새 제약 조건이 추가됩니다. WITH NOCHECK 옵션은 기존 데이터가 새 FOREIGN KEY 제약 조건을 이미 만족하거나 비즈니스 규칙에 따라 앞으로만 새 제약 조건을 적용해야 할 때 유용합니다.

그러나 기존 데이터를 검사하지 않고 제약 조건을 추가할 때는 데이터베이스 엔진에서 테이블의 데이터 무결성 규칙을 강제 적용하지 않으므로 주의해야 합니다.

FOREIGN KEY 제약 조건을 만들 때 기존 데이터를 검사하지 않으려면

ALTER TABLE(Transact-SQL)

FOREIGN KEY 제약 조건 비활성화

INSERT 작업, UPDATE 작업 및 복제 처리와 같은 특정 작업에 대해 기존 FOREIGN KEY 제약 조건을 비활성화할 수 있습니다.

  • INSERT 및 UPDATE 문

    FOREIGN KEY 제약 조건을 비활성화하면 제약 조건의 유효성 검사 없이 테이블의 데이터를 수정할 수 있습니다. 새 데이터가 제약 조건을 위반하거나 이미 데이터베이스에 있는 데이터에만 제약 조건을 적용해야 하면 INSERT 및 UPDATE 문에서 FOREIGN KEY 제약 조건을 비활성화하십시오.

    [!참고]

    비활성화된 외래 키가 포함된 열에서는 관련 기본 키에 정의된 연계 동작이 수행되지 않습니다.

  • 복제 처리

    FOREIGN KEY 제약 조건이 원본 데이터베이스에만 적용되면 복제 중 제약 조건을 비활성화하십시오. 테이블을 복제하면 원본 데이터베이스의 테이블 정의와 데이터가 대상 데이터베이스로 복사됩니다. FOREIGN KEY 제약 조건이 원본 데이터베이스에만 적용될 경우 복제 중 제약 조건을 비활성화하지 않으면 대상 데이터베이스에 새 데이터가 들어가지 않을 수 있습니다. 자세한 내용은 NOT FOR REPLICATION으로 제약 조건, ID 및 트리거 제어를 참조하십시오.

INSERT 및 UPDATE 문에 대해 FOREIGN KEY 제약 조건을 비활성화하려면

ALTER TABLE(Transact-SQL)

방법: INSERT 및 UPDATE 문에서 외래 키 제약 조건 사용 안 함(Visual Database Tools)

복제 시 FOREIGN KEY 제약 조건을 비활성화하려면

ALTER TABLE(Transact-SQL)

방법: 복제할 때 외래 키 제약 조건 사용 안 함(Visual Database Tools)

FOREIGN KEY 제약 조건에 대한 정보를 얻으려면

sys.foreign_keys(Transact-SQL)

FOREIGN KEY 제약 조건을 구성하는 열에 대한 정보를 얻으려면

sys.foreign_key_columns(Transact-SQL)

참고 항목

개념