SQL FOREIGN KEY
Constraint
SQL FOREIGN KEY Constraint
A FOREIGN KEY in one table points to a UNIQUE KEY (a key with a unique constraint) in another table.
Let's explain the foreign key through an example. Consider the following two tables:
"Persons" table:
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
"Orders" table:
O_Id | OrderNo | P_Id |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
Note that the "P_Id" column in the "Orders" table points to the "P_Id" column in the "Persons" table.
The "P_Id" column in the "Persons" table is the PRIMARY KEY in the "Persons" table.
The "P_Id" column in the "Orders" table is the FOREIGN KEY in the "Orders" table.
The FOREIGN KEY constraint is used to prevent actions that would destroy links between tables.
The FOREIGN KEY constraint also prevents invalid data from being inserted into the foreign key column, as it has to be one of the values contained in the table it points to.
SQL FOREIGN KEY Constraint When Creating a Table
The following SQL creates a FOREIGN KEY constraint on the "P_Id" column when the "Orders" table is created:
MySQL:
SQL Server / Oracle / MS Access:
To name a FOREIGN KEY constraint and define a FOREIGN KEY constraint for multiple columns, use the following SQL syntax:
MySQL / SQL Server / Oracle / MS Access:
SQL FOREIGN KEY Constraint When Altering a Table
When the "Orders" table has already been created, to create a FOREIGN KEY constraint on the "P_Id" column, use the following SQL:
MySQL / SQL Server / Oracle / MS Access:
To name a FOREIGN KEY constraint and define a FOREIGN KEY constraint for multiple columns, use the following SQL syntax:
MySQL / SQL Server / Oracle / MS Access:
Drop a FOREIGN KEY Constraint
To drop a FOREIGN KEY constraint, use the following SQL:
MySQL:
SQL Server / Oracle / MS Access: