수색…


외래 키가있는 테이블 만들기

이 예제에는 기존 테이블 인 SuperHeros 있습니다.

이 테이블은 기본 키 ID 포함합니다.

각 슈퍼 영웅의 힘을 저장하기 위해 새 테이블을 추가합니다.

CREATE TABLE HeroPowers
(
    ID int NOT NULL PRIMARY KEY,
    Name nvarchar(MAX) NOT NULL,
    HeroId int REFERENCES SuperHeros(ID)
)

HeroId 열은 SuperHeros 테이블에 대한 외래 키 입니다.

외래 키 설명

외래 키 제약 조건은 한 테이블의 값이 다른 테이블의 값과 일치하도록 강제함으로써 데이터 무결성을 보장합니다.

외래 키가 필요한 곳의 예는 다음과 같습니다. 대학에서는 과정이 반드시 한학과에 속해야합니다. 이 시나리오의 코드는 다음과 같습니다.

CREATE TABLE Department (
    Dept_Code        CHAR (5)     PRIMARY KEY,
    Dept_Name        VARCHAR (20) UNIQUE
);

다음 명령문을 사용하여 값을 삽입하십시오.

INSERT INTO Department VALUES ('CS205', 'Computer Science');

다음 표에는 컴퓨터 과학 지회에서 제공하는 과목 정보가 포함됩니다.

CREATE TABLE Programming_Courses (
    Dept_Code       CHAR(5),
    Prg_Code        CHAR(9) PRIMARY KEY,
    Prg_Name        VARCHAR (50) UNIQUE,
    FOREIGN KEY (Dept_Code) References Department(Dept_Code)
);

외부 키의 데이터 유형은 참조 된 키의 데이터 유형과 일치해야합니다.

Dept_Code 열에 대한 외래 키 제약 조건은 참조 된 테이블 인 Department 에 이미있는 경우에만 값을 허용합니다. 즉, 다음 값을 삽입하려고하면 :

INSERT INTO Programming_Courses Values ('CS300', 'FDB-DB001', 'Database Systems');

CS300Department 테이블에 존재하지 않으므로 데이터베이스는 외부 키 위반 오류를 발생시킵니다. 그러나 존재하는 핵심 가치를 시도 할 때 :

INSERT INTO Programming_Courses VALUES ('CS205', 'FDB-DB001', 'Database Systems');
INSERT INTO Programming_Courses VALUES ('CS205', 'DB2-DB002', 'Database Systems II');

데이터베이스는 이러한 값을 허용합니다.

외래 키 사용에 대한 몇 가지 팁

  • 외래 키는 상위 테이블의 고유 키 (또는 기본 키)를 참조해야합니다.
  • 외래 키 열에 NULL 값을 입력해도 오류가 발생하지 않습니다.
  • 외래 키 제약 조건은 동일한 데이터베이스 내의 테이블을 참조 할 수 있습니다.
  • 외래 키 제약 조건은 동일한 테이블의 다른 열을 참조 할 수 있습니다 (자체 참조).


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow