Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL Server

ปิดใช้งาน Foreign Key ใน SQL Server

ปิดใช้งาน (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