2017-03-07 3 views
0

Ich habe die folgenden Tabellen in einer DB:MySQL - fügen Sie Indizes, Link-Tabellen

CREATE TABLE `items_link` (
    `upc` varchar(15) NOT NULL DEFAULT '', 
    PRIMARY KEY (`upc`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 

Dann wird eine weitere Tabelle:

CREATE TABLE `mws_data` (
    `ItemID` float NOT NULL AUTO_INCREMENT, 
    `Status_response` varchar(15) DEFAULT '', 
    `Id` varchar(15) NOT NULL DEFAULT '', 
    `IdType` varchar(7) NOT NULL DEFAULT '', 
    `IsMultASIN` tinyint(1) DEFAULT '0', 
    `ASIN` varchar(20) DEFAULT '', 
    `BrandAmazon` varchar(150) DEFAULT '', 
    `Title` varchar(1000) DEFAULT '', 
    `ProductGroup` varchar(150) DEFAULT '', 
    `ImgURL` varchar(500) DEFAULT '', 
    `PkgHeight` float DEFAULT NULL, 
    `PkgWidth` float DEFAULT NULL, 
    `PkgLength` float DEFAULT NULL, 
    `PkgWeight` float DEFAULT NULL, 
    `PackageQuantity` float DEFAULT NULL, 
    `Unique_Entry_Id` datetime NOT NULL, 
    PRIMARY KEY (`ItemID`) 
    ) ENGINE=InnoDB AUTO_INCREMENT=116973 DEFAULT CHARSET=utf8 

Nun, ich versuche, das Feld 'Id' gesetzt von 'mws_data' zu einem Fremdschlüssel, dass Verweise 'upc' von 'items_link':

alter table mws_data add foreign key (Id) references items_link.upc; 

jedoch dieser Fehler zeigt:

Error Code: 1215. Cannot add foreign key constraint 

Ich habe für Werte in 'mws_data.id' versucht suchen, die nicht in 'items_link.id' sind, erhielt aber 0 Ergebnisse:

select Id 
    from mws_data 
    where id not in (select upc from items_link); 

würden Anregungen sehr dankbar!

Antwort

1

Das Problem ist in der Zeile:

alter table mws_data add foreign key (Id) references items_link.upc; 

dieses Versuchen Sie stattdessen:

alter table mws_data add constraint fk_id foreign key (Id) references items_link(upc); 
+0

Sie eigentlich gar nicht haben um den Primärschlüssel in der Quelltabelle anzugeben. alter table mws_data add constraint ... Fremdschlüssel (Id) referenzen items_link; wird nur funktionieren. –

+0

Perfekt, vielen Dank, das hat super funktioniert! –

1

Für Ihre Anfrage würde ich diese Indizes vorschlagen:

CREATE INDEX your_index_1 ON mws_data (Id) 

CREATE INDEX your_index_2 ON items_link (upc) 
Verwandte Themen