Di bawah ini akan gagal karena susunannya berbeda. Mengapa saya menunjukkan ini? Karena OP tidak.
Catatan Saya mengecilkan ukuran karena kesalahan 1071 pada ukuran untuk varchar 255 dengan susunan itu dan kemudian rangkaian karakter yang dipilih secara otomatis.
Intinya, jika susunannya berbeda, itu tidak akan berhasil.
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;
Kegagalan di atas adalah pada tingkat tabel. Yang lebih rumit yang menyebabkan kesalahan 1215 karena ketidakcocokan susunan tingkat kolom dapat dilihat di Jawaban ini .
Menarik diskusi ke kasus yang lebih umum ...
apakah Anda mencoba membuat batasan Kunci Asing pada pembuatan tabel atau dengan ALTER TABLE
seperti
ALTER TABLE `facility` ADD CONSTRAINT `fkZipcode`
FOREIGN KEY (`zipcode`) REFERENCES `allzips`(`zipcode`);
berikut ini akan berlaku.
Dari halaman manual MySQL berjudul Menggunakan KUNCI ASING Batasan :
Selain itu, direferensikan tabel (induk) harus memiliki kunci paling kiri yang tersedia untuk pencarian cepat (verifikasi). Kunci induk itu tidak harus PRIMARY
atau bahkan UNIQUE
. Konsep ini dijelaskan dalam potongan ke-2 di bawah ini. Potongan pertama menyinggung Pembantu indeks yang akan dibuat jika perlu di referensi tabel (anak) jika perlu.