Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cú pháp tạo Foreign Key trong MySQL

Để tạo khóa ngoại (Foreign Key) trong MySQL, sử dụng câu lệnh ALTER TABLE ... ADD CONSTRAINT.

Cú pháp

ALTER TABLE ten_bang_con 
ADD CONSTRAINT ten_rang_buoc 
FOREIGN KEY (cot_khoa_ngoai) 
REFERENCES ten_bang_cha (cot_khoa_chinh);

Ví dụ minh họa

Tạo bảng cha (Department_Table):

mysql> CREATE TABLE Department_Table (
    -> Department_Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Department_Name VARCHAR(30)
    -> );

Tạo bảng con (Employee_Table) - chưa có FK:

mysql> CREATE TABLE Employee_Table (
    -> EmployeeID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> EmployeeName VARCHAR(80),
    -> Job VARCHAR(30),
    -> Department_Id INT NOT NULL
    -> );

Lưu ý: Chỉ khai báo Department_Id INT NOT NULL không tự tạo FK.

Thêm Foreign Key:

mysql> ALTER TABLE Employee_Table 
    -> ADD CONSTRAINT fk_Department_Id 
    -> FOREIGN KEY(Department_Id) 
    -> REFERENCES Department_Table(Department_Id);
Query OK, 0 rows affected (2.82 sec)

Các tùy chọn tham chiếu (Referential Actions)

-- Khi xóa/sửa bản ghi cha:
ON DELETE CASCADE        -- Xóa luôn bản ghi con
ON DELETE SET NULL       -- Đặt NULL cho cột FK trong bản ghi con
ON DELETE RESTRICT       -- Chặn xóa nếu còn bản ghi con (mặc định)
ON DELETE NO ACTION      -- Tương tự RESTRICT

ON UPDATE CASCADE        -- Cập nhật FK khi PK thay đổi
ON UPDATE SET NULL
ON UPDATE RESTRICT
ON UPDATE NO ACTION

Ví dụ đầy đủ:

ALTER TABLE Employee_Table 
ADD CONSTRAINT fk_Department_Id 
FOREIGN KEY(Department_Id) 
REFERENCES Department_Table(Department_Id)
ON DELETE RESTRICT
ON UPDATE CASCADE;