【发布时间】:2018-03-13 02:24:49
【问题描述】:
当我执行以下 SQL 代码来创建数据库和表时,我收到错误消息:Error Code: 1215. Cannot add foreign key constraint。如果我将test.book.storeID 设为主键,则代码有效。引用的列是否需要是主键?
CREATE SCHEMA IF NOT EXISTS `test` DEFAULT CHARACTER SET utf8 ;
USE `test` ;
CREATE TABLE IF NOT EXISTS `test`.`book` (
`ID` INT UNSIGNED NOT NULL,
`storeID` INT UNSIGNED NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE INDEX `storeID_UNIQUE` (`storeID` ASC))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `test`.`shoppingCartItem` (
`userID` INT UNSIGNED NOT NULL,
`bookID` INT UNSIGNED NOT NULL,
`storeID` INT UNSIGNED NOT NULL,
PRIMARY KEY (`userID`, `bookID`),
INDEX `fk_idx` (`bookID` ASC, `storeID` ASC),
CONSTRAINT `fk`
FOREIGN KEY (`bookID` , `storeID`)
REFERENCES `test`.`book` (`ID` , `storeID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
【问题讨论】: