我有<{p>}表category
cat_id
category
和表products
与
prod_id
products
和另一张表product_category
与
pkey
index
我试图在product_category
上添加外键:
ALTER TABLE product_category
ADD FOREIGN KEY (cat_id)
REFERENCES categories(cat_id)
问题是什么?
答案 0 :(得分:4)
您的表格product_category
没有cat_id
字段,因此您无法添加引用。
添加具有相同数据类型categoriy.cat_id
的字段,然后重试。
你使用了什么storage engine?请注意,MyISAM不支持checking for foreign key constraints。
我猜pkey
应该是对prod_id
的引用?将其命名为prod_id
或类似的内容会使其更清楚地引用它。
答案 1 :(得分:1)
您必须先在表中添加cat_id,然后尝试添加外键引用。
alter table Table_name
add col_name data_type constraints
答案 2 :(得分:1)
问题是您的表名为category
(单数),并且您尝试引用表categories
(复数),除此之外您没有使用表中的字段名称PRODUCT_CATEGORY。
请参阅以下示例,它可以执行您所需的操作。 (我已经从product_category更改了字段名称,因此更清楚在哪里使用)。
mysql> create table category (cat_id int, category varchar(200));
Query OK, 0 rows affected (0.39 sec)
mysql> create table products (prod_id int, product varchar(200));
Query OK, 0 rows affected (0.40 sec)
mysql> create table product_category (pc_prod_id int, pc_cat_id int);
Query OK, 0 rows affected (0.13 sec)
mysql> alter table product_category add foreign key (pc_cat_id) references category(cat_id);
Query OK, 0 rows affected (0.42 sec)
Records: 0 Duplicates: 0 Warnings: 0
答案 3 :(得分:1)
这是应该如何修复:
我们有两个表,
table1( id_table1 int primary key, field int)ENGINE=INNODB;
table2( id_table2 int primary key, id_table1 int, field2 int)ENGINE=INNODB;
如果您想将table1
的主键放在table2
中,则必须声明
table2
id_table1
像这样:id_table1 integer
然后写下您的foreign key(id_table1)
引用table1(id_table1)
答案 4 :(得分:0)
您的表product_category不包含您在查询中指定的列。 添加它并运行此查询....
查询没有问题..