Bên dưới sẽ không thành công vì đối chiếu khác nhau. Tại sao tôi hiển thị điều này? Bởi vì OP đã không.
Lưu ý rằng tôi đã thu nhỏ kích thước do lỗi 1071 khi định cỡ cho varchar 255 với đối chiếu đó và sau đó bộ ký tự được chọn tự động.
Vấn đề là, nếu đối chiếu khác nhau, nó sẽ không hoạt động.
CREATE TABLE `user_details` (
`ClientID` VARCHAR(100) NOT NULL,
PRIMARY KEY (`ClientID`)
)ENGINE=InnoDB;
CREATE TABLE `profilePic` (
`ClientID` VARCHAR(100) NOT NULL,
PRIMARY KEY (`ClientID`),
CONSTRAINT `FK__user_details` FOREIGN KEY (`ClientID`) REFERENCES `user_details` (`ClientID`) ON UPDATE CASCADE ON DELETE CASCADE
)COLLATE='utf8mb4_unicode_ci' ENGINE=InnoDB;
Thất bại kể trên là ở mức cần bàn. Có thể thấy một lỗi phức tạp hơn gây ra lỗi 1215 do đối chiếu cấp cột không khớp trong câu trả lời này .
Đưa cuộc thảo luận lên các trường hợp chung hơn ...
cho dù bạn đang cố gắng thiết lập ràng buộc Khoá ngoại khi tạo bảng hay với ALTER TABLE
chẳng hạn như
ALTER TABLE `facility` ADD CONSTRAINT `fkZipcode`
FOREIGN KEY (`zipcode`) REFERENCES `allzips`(`zipcode`);
những điều sau sẽ được áp dụng.
Từ trang hướng dẫn sử dụng MySQL có tên Sử dụng FOREIGN KEY Ràng buộc :
Ngoài ra, được tham chiếu (chính) bảng phải có sẵn một khóa ngoài cùng bên trái để tra cứu nhanh (xác minh). Khóa cha đó không cần phải là PRIMARY
hoặc thậm chí UNIQUE
. Khái niệm này được mô tả trong đoạn thứ 2 dưới đây. Đoạn đầu tiên ám chỉ đến một Người trợ giúp chỉ mục sẽ được tạo nếu cần trong tham chiếu bảng (con) nếu cần thiết.