수색…
외래 키가있는 테이블 만들기
이 예제에는 기존 테이블 인 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');
CS300
이 Department
테이블에 존재하지 않으므로 데이터베이스는 외부 키 위반 오류를 발생시킵니다. 그러나 존재하는 핵심 가치를 시도 할 때 :
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