Nedanstående kommer att misslyckas eftersom sorteringen är annorlunda. Varför visar jag detta? Eftersom OP inte gjorde det.
Notera att jag krympte storleken på grund av fel 1071 vid dimensionering för varchar 255 med den sorteringen och sedan automatiskt vald teckenuppsättning.
Poängen är att om sorteringen är annorlunda kommer den inte att fungera.
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;
Ovanstående misslyckande är på tabellnivå. En knepigare som orsakar ett 1215-fel på grund av oöverensstämmelse i kolumnnivå kan ses i det här svaret .
Drar diskussionen upp till mer allmänna fall ...
oavsett om du försöker skapa en utländsk nyckel-begränsning vid skapandet av tabeller eller med ALTER TABLE
som
ALTER TABLE `facility` ADD CONSTRAINT `fkZipcode`
FOREIGN KEY (`zipcode`) REFERENCES `allzips`(`zipcode`);
följande kommer att gälla.
Från MySQL-manualsidan med titeln Using FOREIGN KEY Begränsningar :
Dessutom är referens (förälder) tabell måste ha en nyckel längst till vänster tillgänglig för snabb uppslagning (verifiering). Den överordnade nyckeln behöver inte vara PRIMARY
eller till och med UNIQUE
. Detta koncept beskrivs i den andra delen nedan. Den första delen anspelar på en Hjälpare index som kommer att skapas vid behov i referensen (underordnat) bord om det behövs.