Đáp án d. là đúng, nếu và chỉ khi công cụ lưu trữ thực sự hỗ trợ và thực thi các ràng buộc khóa ngoại.
Nếu các bảng được tạo bằng Engine=MyISAM
, sau đó không b. hoặc d. là đúng.
Nếu các bảng được tạo bằng Engine=InnoDB
, sau đó d. là đúng.
LƯU Ý:
Điều này đúng với InnoDB nếu và chỉ khi FOREIGN_KEY_CHECKS = 1
; nếu FOREIGN_KEY_CHECKS = 0
, sau đó là DELETE
từ bảng chính (foo) sẽ không xóa các hàng khỏi bảng con (foo2) tham chiếu đến một hàng đã bị xóa khỏi bảng mẹ.
Xác minh điều này với kết quả từ SHOW VARIABLES LIKE 'foreign_key_checks'
(1 =BẬT, 0 =TẮT) (Mặc định thông thường là BẬT.)
Kết quả từ SHOW CREATE TABLE foo
sẽ hiển thị công cụ mà bảng sử dụng.
Kết quả từ SHOW VARIABLES LIKE 'storage_engine'
sẽ hiển thị công cụ mặc định được sử dụng khi một bảng được tạo và công cụ không được chỉ định.