Nedenstående vil mislykkes, fordi sorteringen er anderledes. Hvorfor viser jeg dette? Fordi OP gjorde det ikke.
Bemærk, at jeg har formindsket størrelsen på grund af fejl 1071 i dimensionering for varchar 255 med den sortering og derefter automatisk valgt tegnsæt.
Pointen er, at hvis sortering er anderledes, vil det ikke fungere.
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;
Ovenstående fejl er på tabelniveau. En vanskeligere en, der forårsager en 1215-fejl på grund af uoverensstemmelser i kolonneniveau, kan ses i dette svar .
Trækker diskussionen op til mere generelle sager ...
uanset om du forsøger at etablere en Foreign Key-begrænsning ved tabeloprettelse eller med ALTER TABLE
såsom
ALTER TABLE `facility` ADD CONSTRAINT `fkZipcode`
FOREIGN KEY (`zipcode`) REFERENCES `allzips`(`zipcode`);
følgende vil gælde.
Fra MySQL-manualsiden med titlen Brug af UDENLANDSKE NØGLE Begrænsninger :
Derudover er den henviste (overordnet) tabel skal have en nøgle længst til venstre tilgængelig for hurtigt opslag (bekræftelse). Den overordnede nøgle behøver ikke at være PRIMARY
eller endda UNIQUE
. Dette koncept er beskrevet i 2. del nedenfor. Den første del hentyder til en Hjælper indeks, der vil blive oprettet om nødvendigt i henvisningen (underordnet) bord, hvis det er nødvendigt.