2011-07-08 21 views
1

存在我有表category鍵列 'CAT_ID' 不表

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) 

是什麼問題?

回答

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 
1

您必須首先在表中添加cat_id,然後嘗試添加外鍵引用。

alter table Table_name 
add col_name data_type constraints 
4

你的表product_category沒有一個cat_id場,所以你不能添加引用。 使用相同的數據類型categoriy.cat_id添加該字段,然後重試。

您使用什麼storage engine?請記住,MyISAM不支持checking for foreign key constraints

我猜pkey應該是prod_id的參考嗎?命名它prod_id或類似的東西會使它更清晰地引用它。

0

你的表PRODUCT_CATEGORY不包含您在查詢中指定的列.. 添加它並運行此查詢....

沒有與查詢沒有問題..

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 the id_table1

想要這樣:id_table1 integer

,然後寫你的foreign key(id_table1)引用table1(id_table1)