SQL Server 외국인 핵심
요약:이 튜토리얼에서,당신은 방법을 사용하여 SQL Server 외국 키를 제한조건을 적용하 사이의 링크의 데이터에서 두 테이블이 있습니다.
소개하는 SQL Server 외국 key
을 고려하는 다음과 같은vendor_groups
및vendors
테이블:
각 공급업체에 속한 공급업체 그룹 각각 공급업체 그룹을 수 있는 공급 업체입니다. vendor_groups
와vendors
테이블 간의 관계는 일대 다입니다.,
각 행에 대해vendors
테이블,당신은 항상 찾을 수 있습니다 해당하는 행vendor_groups
테이블.
그러나 현재는 테이블 설정에 삽입할 수 있습니다 행vendors
테이블 없이 해당 행에는vendor_groups
테이블. 마찬가지로,당신은 당신을 삭제할 수 있습니다 행vendor_groups
테이블 없이 업데이트하거나 삭제하면 해당 행에는vendors
테이블에서 결과 분리된 행vendors
테이블.,
을 적용하 사이의 링크를 데이터에서는vendor_groups
및vendors
테이블을 설정해야 합 외국에서 키vendors
테이블.
외국인 핵심은 열이나 그룹의 열 한 테이블에서 고유하게 식별하는 행 다른 테이블의(또는 동일한 테이블의 경우에는 자 참조).
외래 키를 만들려면FOREIGN KEY
제약 조건을 사용합니다.,
다음과 같은 문 드롭vendors
테이블과 다시 만들어진FOREIGN KEY
제약
vendor_groups
테이블 지금 부모 테이블의 테이블에는 외국인 키의 제약 조건 참조가 있습니다. vendors
테이블은 외래 키 제약 조건이 적용되는 테이블 인 자식 테이블이라고합니다.,
에서 문을 위 다음과 같은 절 만듭FOREIGN KEY
제약 조건이라는fk_group
를 연결하는group_id
vendors
테이블을group_id
vendor_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 UPDATE
및ON 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 DEFAULT
SQL 서버 설정 행위 테이블 기본값으로는 경우에는 해당 행에서 부모 테이블은 삭제됩니다. 이 작업을 실행하려면 외래 키 열에 기본 정의가 있어야 합니다. 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 서버에 대한 기본값을 설정합의 행동하는 테이블이 있는 해당 행에서 부모 테이블 업데이트됩니다.리>