Để 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;