当我尝试在SQL中将当前表插入到我的表中时,我得到一个错误(Products表):
CREATE TABLE parent(
Barcode INT(9),
PRIMARY KEY (Barcode)
) ENGINE=INNODB;
CREATE TABLE SuppliedBy(
Onr CHAR(10),
OrgNR INT(10),
Date DATE NOT NULL,
PRIMARY KEY (Onr),
FOREIGN KEY (OrgNR) REFERENCES Supplier(OrgNR)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE=INNODB;
CREATE TABLE Products(
Onr CHAR(10),
Barcode INT(9),
Quantity INT(10) DEFAULT 0
CHECK (Quantity >= 0),
PRIMARY KEY (Onr, Barcode),
FOREIGN KEY (Onr) REFERENCES SuppliedBy(SSN)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (Barcode) REFERENCES parent(Barcode)
ON DELETE CASCADE
ON UPDATE CASCADE
)ENGINE=INNODB;
我收到以下消息:
#1005 - Can't create table '.\db_project\#sql-b58_6d.frm' (errno: 150)
我确定它与这个关系中的几个外键有关,我在互联网上搜索,但找不到解决方案。
答案 0 :(得分:2)
没有列SuppliedBy.SSN
。
FOREIGN KEY (Onr) REFERENCES SuppliedBy(SSN)
也许你的意思是
FOREIGN KEY (Onr) REFERENCES SuppliedBy(Onr)
ON DELETE CASCADE
ON UPDATE CASCADE,
答案 1 :(得分:0)
我认为问题很可能是你定义FOREIGN KEYS指向的表之一没有你指向的索引外键字段。
要使FOREIGN KEY正常工作,您指向的字段需要有一个索引。
请参阅Mysql. Can't create table errno 150
另外,请检查您是否符合创建密钥的所有条件。两个表中的列必须: