2017-03-07 72 views
0

我有一個DB下表:MySQL的 - 添加索引,鏈接表

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

然後,另一個表:

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 

現在,我嘗試從設置字段 'ID' 'mws_data' 的外鍵引用 'UPC' 從 'items_link':

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

但是,此錯誤顯示:

Error Code: 1215. Cannot add foreign key constraint 

我試圖尋找「mws_data.id」不在'items_link.id的價值觀,卻收到0的結果:

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

任何建議,將不勝感激!

回答

1

的問題是在該行:

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

試試這個:

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

你實際上並沒有在源表中指定主鍵。 alter table mws_data添加約束...外鍵(Id)引用items_link;將工作。 –

+0

完美,非常感謝,這工作得很好! –

1

您所查詢的,我建議這些指標:

CREATE INDEX your_index_1 ON mws_data (Id) 

CREATE INDEX your_index_2 ON items_link (upc)