CREATE TABLE person (person_id INT NOT NULL,
PRIMARY KEY (person_id));
CREATE TABLE hobby (hobby_id INT NOT NULL, person_id INT NOT NULL,
PRIMARY KEY(hobby_id),
FOREIGN KEY(person_id) REFERENCES person(person_id));
Các từ khóa tài liệu tham khảo được sử dụng để xác định những bảng và cột được sử dụng trong một mối quan hệ khóa ngoại. Điều này có nghĩa rằng một bản ghi trong bảng sở thích phải có một person_id tồn tại trong bảng người hoặc người khác tại thời điểm chèn, bạn sẽ nhận được một lỗi mà khóa không tồn tại.
Để trả lời câu hỏi của bạn ở trên về "ON DELETE CASCADE", nó cho phép bạn xóa bản ghi khóa chính (người) và các bản ghi con tương ứng (theo sở thích) mà không phải xóa tất cả các bản ghi con đầu tiên.
Để làm rõ, nếu bạn có con hồ sơ kèm theo một mục khóa chính và bạn cố gắng để xóa các entry khóa chính như:
DELETE FROM person where person_id = 1;
mà không có DELETE ON CASCADE, bạn sẽ nhận được một lỗi nếu có hồ sơ trong sở thích có person_id của 1. Bạn sẽ xóa tất cả các hồ sơ đầu tiên trước khi thực hiện xóa ở trên. Với DELETE ON CASCADE được sử dụng, xóa ở trên sẽ thành công và tự động xóa bất kỳ và tất cả các bản ghi từ bảng sở thích bảng được liên kết với person_id bị xóa khỏi bảng khóa chính.
Nguồn
2010-02-03 14:13:10
Đáng chú ý, một FK nội tuyến ('TÀI LIỆU THAM KHẢO INT Sở thích (ID)') KHÔNG hoạt động. Điều này gần đây đã được báo cáo là một lỗi (http://bugs.mysql.com/bug.php?id=4919), vì vậy tôi chắc chắn họ sẽ sớm xử lý nó. –