Articles

SQL Server 외국인 핵심

요약:이 튜토리얼에서,당신은 방법을 사용하여 SQL Server 외국 키를 제한조건을 적용하 사이의 링크의 데이터에서 두 테이블이 있습니다.

소개하는 SQL Server 외국 key

을 고려하는 다음과 같은vendor_groupsvendors테이블:

각 공급업체에 속한 공급업체 그룹 각각 공급업체 그룹을 수 있는 공급 업체입니다. vendor_groupsvendors테이블 간의 관계는 일대 다입니다.,

각 행에 대해vendors테이블,당신은 항상 찾을 수 있습니다 해당하는 행vendor_groups테이블.

그러나 현재는 테이블 설정에 삽입할 수 있습니다 행vendors테이블 없이 해당 행에는vendor_groups테이블. 마찬가지로,당신은 당신을 삭제할 수 있습니다 행vendor_groups테이블 없이 업데이트하거나 삭제하면 해당 행에는vendors테이블에서 결과 분리된 행vendors테이블.,

을 적용하 사이의 링크를 데이터에서는vendor_groupsvendors테이블을 설정해야 합 외국에서 키vendors테이블.

외국인 핵심은 열이나 그룹의 열 한 테이블에서 고유하게 식별하는 행 다른 테이블의(또는 동일한 테이블의 경우에는 자 참조).

외래 키를 만들려면FOREIGN KEY제약 조건을 사용합니다.,

다음과 같은 문 드롭vendors테이블과 다시 만들어진FOREIGN KEY제약

vendor_groups테이블 지금 부모 테이블의 테이블에는 외국인 키의 제약 조건 참조가 있습니다. vendors테이블은 외래 키 제약 조건이 적용되는 테이블 인 자식 테이블이라고합니다.,

에서 문을 위 다음과 같은 절 만듭FOREIGN KEY제약 조건이라는fk_group를 연결하는group_idvendors테이블을group_idvendor_groups테이블:

SQL Server 외국 KEY 구

일반적인 구문을 만드는FOREIGN KEY제약 조건은 다음과 같습니다:

의 검사가 이 구문에서 세부 사항입니다.,

먼저FOREIGN KEY제약 조건 이름 뒤에CONSTRAINT키워드를 지정하십시오. 제 이름은 선택 사항 따라서 그것은 가을 정의하는FOREIGN KEY제약 조건을 다음과 같다:

이 경우에는 SQL 서버가 자동으로 생성할 이름을FOREIGN KEY제약 조건이 있습니다.

둘째,FOREIGN KEY키워드 뒤에 괄호로 묶인 쉼표로 구분 된 외래 키 열 목록을 지정하십시오.,

셋째,이름을 지정한 부모는 테이블의 외국인 핵심 참고 목록을 쉼표로 구분된 열이 링크를 가지고 있는 열에 아이는 테이블.

SQL Server 외국 KEY 예

첫 번째 삽입,일부 행을vendor_groups테이블:

두 번째,삽입하는 새로운 공급업체와 공급업체 그룹으로vendors테이블:

Code language: SQL (Structured Query Language) (sql)

문을 일으로 예상된다.,

번째,삽입하려고 하는 새로운 공급업체는 공급업체 그룹에 존재하지 않vendor_groups테이블:

Code language: SQL (Structured Query Language) (sql)

SQL 서버는 다음과 같은 오류가:

이 예제에서,때문에FOREIGN KEY제약 조건 SQL 서버를 거부하고 삽입하고 발행하는 오류가 있습니다.

참조 동작

외래 키 제약 조건은 참조 무결성을 보장합니다. 즉,상위 테이블에 해당 행이있는 경우에만 하위 테이블에 행을 삽입 할 수 있습니다.,

이 외 키 제약 조건을 정의할 수 있습 참조 작업을 때 부모 테이블에서 행 업데이트하거나 삭제는 다음과 같다:

ON UPDATEON DELETE 지정하는 작업이 실행될 때 부모 테이블에서 행입 업데이트 및 삭제됩니다., 다음과 같은 허용되는 동작:NO ACTION,CASCADE,SET NULL,andSET DEFAULT

삭제 작업에서 행의 부모 테이블

경우에 당신을 삭제 하나 이상의 행에는 부모 테이블 당신은 설정할 수 있습니다 다음 중 하나의 동작:

  • ON DELETE NO ACTION:SQL 서버 오류가 발생하며 롤 다시 삭제 작업에서 부모 테이블에서 행.
  • ON DELETE CASCADE:SQL 서버 삭제하고 행동하는 테이블은 해당하는 행 삭제에서는 부모 테이블.,
  • ON DELETE SET NULL:SQL 서버 설정 행위 테이블을NULL경우에는 해당 행에서 부모 테이블은 삭제됩니다. 이 작업을 실행하려면 외래 키 열을 nullable 이어야 합니다.
  • ON DELETE SET DEFAULTSQL 서버 설정 행위 테이블 기본값으로는 경우에는 해당 행에서 부모 테이블은 삭제됩니다. 이 작업을 실행하려면 외래 키 열에 기본 정의가 있어야 합니다. Nullable 열에 기본값이 지정되지 않은 경우NULL의 기본값이 있습니다.,

기본적으로 sql Server 는 명시 적으로 작업을 지정하지 않으면ON DELETE NO ACTION를 적용합니다.

업데이트 작업에서 행의 부모 테이블

업데이트하는 경우 하나 이상의 행 부모 테이블에서,당신은 설정할 수 있습니다 다음 중 하나의 동작:

  • ON UPDATE NO ACTION:SQL 서버 오류가 발생하며 롤 다시 업데이트 작업에서 부모 테이블에서 행.
  • ON UPDATE CASCADE:sql Server 는 상위 테이블의 행이 업데이트 될 때 하위 테이블의 해당 행을 업데이트합니다.,
  • ON UPDATE SET NULL:SQL 서버 설정 행위 테이블을NULL경우 해당 부모 테이블에서 행입 업데이트됩니다. 이 작업을 실행하려면 외래 키 열이 nullable 이어야 합니다.
  • ON UPDATE SET DEFAULT:SQL 서버에 대한 기본값을 설정합의 행동하는 테이블이 있는 해당 행에서 부모 테이블 업데이트됩니다.