ปิดใช้งาน (Disable) Foreign Key
ใช้คำสั่ง ALTER TABLE ... NOCHECK CONSTRAINT เพื่อหยุดบังคับ FK ชั่วคราว (เช่นตอนโหลดข้อมูลจำนวนมาก)
รูปแบบคำสั่ง
ALTER TABLE table_name
NOCHECK CONSTRAINT fk_name;
ตัวอย่าง
-- สร้างตารางและ FK
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)
);
-- ปิดใช้งาน FK
ALTER TABLE hangtonkho
NOCHECK CONSTRAINT fk_htk_id_sanpham;
ผลลัพธ์: FK ยังคงอยู่ใน metadata แต่ SQL Server จะไม่ตรวจสอบข้อจำกัดนี้ จนกว่าจะ CHECK CONSTRAINT กลับ
ใช้งานเมื่อไหร่? Bulk insert, data migration, หรือแก้ไขข้อมูลที่ชั่วคราวละเมิด FK