Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL Server

SQL Server에서 외래 키(FOREIGN KEY) 비활성화하는 방법

SQL Server에서 FOREIGN KEY(외래 키)를 생성한 뒤에는 대량 데이터 입력, 마이그레이션 등의 작업을 위해 이를 일시적으로 비활성화해야 하는 경우가 종종 발생합니다. 이럴 때 ALTER TABLE 명령어를 사용하면 간단하게 해결할 수 있습니다.

SQL Server에서 외래 키를 비활성화하는 구문

ALTER TABLE ten_bang
NOCHECK 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 열 사이의 관계를 형성합니다.

함께 알아두면 좋은 내용

  1. SQL Server의 외래 키(Cascade Delete)
  2. SQL Server의 외래 키(Set Null)

생성된 외래 키를 비활성화하려면 아래 명령어를 실행합니다.

ALTER TABLE hangtonkho
NOCHECK CONSTRAINT fk_htk_id_sanpham;

위 예제는 ALTER TABLE 명령을 사용하여 hangtonkho 테이블에 생성된 외래 키 fk_htk_id_sanpham을 비활성화합니다. NOCHECK 옵션이 지정되면 해당 제약 조건이 삭제되지 않은 채로 유지되며, 검증만 중단됩니다.

참고: 비활성화한 외래 키를 다시 활성화하려면 NOCHECK 대신 CHECK 키워드를 사용하면 됩니다.

ALTER TABLE hangtonkho
WITH CHECK CHECK CONSTRAINT fk_htk_id_sanpham;