我有一个类似于:How to create foreign key that is also a primary key in MySQL?的问题
然而,我的模式似乎与答案相匹配,但仍然返回错误"ERROR 1005 (HY000):无法创建表“(errno:150)。
CREATE TABLE po_items (
job_id CHAR(3) NOT NULL,
po_id CHAR(3) NOT NULL,
item_id CHAR(3) NOT NULL,
quantity SMALLINT,
PRIMARY KEY (job_id, po_id, item_id),
FOREIGN KEY (job_id, po_id) REFERENCES pos(job_id, po_id)
) ENGINE = INNODB;
CREATE TABLE items (
item_id CHAR(3) NOT NULL,
descr CHAR(10),
on_hand SMALLINT,
price DECIMAL(5,2),
PRIMARY KEY (item_id),
FOREIGN KEY (item_id) REFERENCES po_items(item_id)
) ENGINE = INNODB;提前感谢
发布于 2014-04-01 06:32:40
若要定义foreign key,所引用的字段必须已编入索引。
根据关于foreign key约束的文档:
参考文献tbl_name (index_col_name,.)
在表INDEX中在item_id上定义一个po_items,它应该是工作的。
CREATE TABLE po_items (
job_id CHAR(3) NOT NULL,
po_id CHAR(3) NOT NULL,
item_id CHAR(3) NOT NULL,
quantity SMALLINT,
KEY (item_id),
PRIMARY KEY (job_id, po_id, item_id),
FOREIGN KEY (job_id, po_id) REFERENCES pos(job_id, po_id)
) ENGINE = INNODB;指:
[约束符号]外键 name 参考文献tbl_name (index_col_name,.) 关于删除reference_option reference_option: 限制\、级联、设置、空、\、不操作
https://stackoverflow.com/questions/22778345
复制相似问题