Home >Database >Mysql Tutorial >How can we distribute FOREIGN KEY constraints on multiple columns?
MySQL allows us to add FOREIGN KEY constraints on multiple columns in a table. The condition is that each foreign key in the child table must refer to a different parent table.
Suppose we have a table named 'customer2' which has a primary key constraint on the field 'cust_unq_id' as shown below -
mysql> describe customer2; +-------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+-------+ | cust_id | int(11) | YES | | NULL | | | First_name | varchar(20) | YES | | NULL | | | Last_name | varchar(20) | YES | | NULL | | | City | varchar(10) | YES | | NULL | | | cust_unq_id | int(11) | NO | PRI | 0 | | +-------------+-------------+------+-----+---------+-------+ 5 rows in set (0.06 sec)
We There is already a table called orders1, which already has a foreign key constraint on the field 'Cust_id', referencing the parent table 'customer'.
mysql> describe orders1; +--------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+-------+ | order_id | int(11) | NO | PRI | NULL | | | Product_name | varchar(25) | YES | | NULL | | | orderdate | date | YES | | NULL | | | Cust_id | int(11) | YES | MUL | NULL | | | cust_unq_id | int(11) | YES | | NULL | | +--------------+-------------+------+-----+---------+-------+ 5 rows in set (0.04 sec)
Now, with the help of the following ALTER TABLE query, we can add another foreign key constraint on the field "cust_unq_id" that refers to the parent table "customer2"
mysql> Alter table orders1 add FOREIGN KEY(cust_unq_id) REFERENCES Customer2(Cust_unq_id); Query OK, 0 rows affected (0.25 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> describe orders1; +--------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+-------+ | order_id | int(11) | NO | PRI | NULL | | | Product_name | varchar(25) | YES | | NULL | | | orderdate | date | YES | | NULL | | | Cust_id | int(11) | YES | MUL | NULL | | | cust_unq_id | int(11) | YES | MUL | NULL | | +--------------+-------------+------+-----+---------+-------+ 5 rows in set (0.06 sec)
As can be seen from the above result set Out, the "orders1" table has two foreign key constraints, one on "cust_id" and the other on the "cust_unq_id" foreign key constraint.
The above is the detailed content of How can we distribute FOREIGN KEY constraints on multiple columns?. For more information, please follow other related articles on the PHP Chinese website!