如何向现有的表添加外键?

8 浏览
0 Comments

如何向现有的表添加外键?

我正在尝试将Category_Name作为外键添加到ITEM表中。Category_Name存在于CATEGORY表中,这是我得到的结果:

mysql> use acmeonline;
数据库已更改
mysql> show tables;
+----------------------+
| Tables_in_acmeonline |
+----------------------+
| category             |
| item                 |
+----------------------+
2行(0.00秒)
mysql> describe item;
+-------------+--------------+------+-----+---------+-------+
| Field       | Type         | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| Item_Number | int(11)      | NO   | PRI | 0       |       |
| Item_Name   | varchar(35)  | YES  |     | NULL    |       |
| Model_Num   | varchar(15)  | YES  |     | NULL    |       |
| Description | varchar(255) | YES  |     | NULL    |       |
| Price       | double(8,2)  | YES  |     | NULL    |       |
+-------------+--------------+------+-----+---------+-------+
5行(0.07秒)
mysql> describe category;
+------------------+-------------+------+-----+---------+-------+
| Field            | Type        | Null | Key | Default | Extra |
+------------------+-------------+------+-----+---------+-------+
| Category_Name    | varchar(35) | NO   | PRI |         |       |
| ShippingPerPound | double(4,2) | YES  |     | NULL    |       |
| DiscountAllowed  | char(1)     | YES  |     | NULL    |       |
+------------------+-------------+------+-----+---------+-------+
3行(0.01秒)
mysql> ALTER TABLE item
 -> ADD CONSTRAINT fk_category_name
 -> FOREIGN KEY(Category_Name)
 -> REFERENCES Category(Category_Name);
ERROR 1072 (42000): Key column 'Category_Name' doesn't exist in table

如何修复这个问题?请耐心等待,因为我确实查看了一些关于如何解决该问题的网站,但结果都是一样的。

0
0 Comments

如何向现有表添加外键?

您必须首先在单独的alter语句中添加列:

alter table item add column category_name varchar(35);

外键约束只能在表之间创建关系,而不能同时创建涉及的列。

0
0 Comments

在现有的表中添加外键的原因是需要在ITEM表中添加CATEGORY_NAME列,或者将外键映射到ITEM中的另一列。解决方法可以是通过ALTER TABLE语句添加新列和外键约束,或者通过ALTER TABLE语句将外键映射到ITEM中的其他已存在的列。

以下是具体的解决方法:

1. 在ITEM表中添加CATEGORY_NAME列,并添加外键约束:

ALTER TABLE ITEM
ADD CATEGORY_NAME VARCHAR(35) NOT NULL;
ALTER TABLE ITEM
ADD CONSTRAINT FK_CATEGORY_NAME
FOREIGN KEY (CATEGORY_NAME)
REFERENCES CATEGORY (CATEGORY_NAME);

2. 将外键映射到ITEM中的其他已存在的列:

ALTER TABLE ITEM
ADD CONSTRAINT FK_CATEGORY_NAME
FOREIGN KEY (SOME_OTHER_EXISTING_COLUMN)
REFERENCES CATEGORY (CATEGORY_NAME);

以上就是如何在现有表中添加外键的解决方法。

0