Adding foreign key to an existing table in MySQL
Start your free 7-days trial now!
We can add a foreign key to an existing table in MySQL using the following general syntax:
ALTER TABLE table_name ADD FOREIGN KEY (column_name) REFERENCES parent_table (parent_column);
Where:
table_nameis the name of the existing table we would like to add a foreign key to.column_nameis the name of the column we would like to make the foreign key.parent_tableis the name of the table within which the column we reference is contained.parent_columnis the name of the column to link to using the foreign key.
Example
Consider the following two tables:
pupil table:
id | name |
|---|---|
1 | axel |
2 | bobby |
3 | cathy |
Refer here for code to generate the pupil table.
product table:
id | name | bought_by |
|---|---|---|
1 | computer | 1 |
2 | hair dryer | 3 |
Refer here for code to generate the product table.
To add a foreign key constraint to bought_by column of product table to refer to id column of pupil table:
ALTER TABLE product ADD FOREIGN KEY (bought_by) REFERENCES pupil (id);
Query OK, 2 rows affected (0.03 sec)Records: 2 Duplicates: 0 Warnings: 0
Now we can make sure that any value we have for bought_by has a corresponding matching value in the id column of pupil. This means we will always have information on the name of the pupil who bought a particular product.