SQL Server에서 외래 키(FOREIGN KEY)가 비활성화된 상태일 때는 ALTER TABLE 명령어를 사용하여 다시 활성화할 수 있습니다.
SQL Server에서 외래 키를 활성화하는 구문
ALTER TABLE ten_bang
CHECK CONSTRAINT fk_ten;
매개변수 설명
ten_bang
외래 키가 생성되어 있는 테이블의 이름입니다.
fk_ten
활성화하려는 외래 키의 이름입니다.
예제
먼저 부모 테이블과 자식 테이블을 생성하고 두 테이블 간에 외래 키 관계를 설정해 보겠습니다.
CREATE TABLE sanpham
( id_sanpham INT PRIMARY KEY,
ten_sanpham VARCHAR(50) NOT NULL,
phan_loai VARCHAR(25)
);
CREATE TABLE hangtonkho
( id_hangtonkho INT PRIMARY KEY,
id_sanpham INT NOT NULL,
soluong INT,
luong_toithieu INT,
luong_toida INT,
CONSTRAINT fk_htk_id_sanpham
FOREIGN KEY (id_sanpham)
REFERENCES sanpham (id_sanpham)
);
위 예제에서는 기본 키로 id_sanpham 필드를 포함하는 부모 테이블 sanpham(상품)을 먼저 생성했습니다. 그다음 자식 테이블인 hangtonkho(재고)를 생성하면서 외래 키 제약 조건을 함께 정의했습니다.
CREATE TABLE 문은 hangtonkho 테이블에 fk_htk_id_sanpham이라는 이름의 외래 키를 생성합니다. 이 외래 키는 hangtonkho 테이블의 id_sanpham 열과 sanpham 테이블의 id_sanpham 열 사이의 관계를 형성합니다.
외래 키 다시 활성화하기
비활성화된 외래 키를 다시 활성화하려면 아래 명령어를 실행합니다.
ALTER TABLE hangtonkho
CHECK CONSTRAINT fk_htk_id_sanpham;
위 예제에서는 ALTER TABLE 명령어를 사용하여 hangtonkho 테이블에 있는 fk_htk_id_sanpham이라는 이름의 외래 키를 다시 활성화했습니다. CHECK CONSTRAINT 옵션을 지정하면 해당 제약 조건이 유효하게 되어, 이후 삽입되거나 수정되는 데이터에 대해 참조 무결성 검사가 다시 수행됩니다.
참고로 SQL Server에서는 CASCADE DELETE(연쇄 삭제) 또는 SET NULL 옵션이 적용된 외래 키도 동일한 방식으로 활성화할 수 있습니다.