Rumah >pangkalan data >tutorial mysql >Bagaimanakah kita boleh mengedarkan kekangan UTAMA ASING pada berbilang lajur?

Bagaimanakah kita boleh mengedarkan kekangan UTAMA ASING pada berbilang lajur?

王林
王林ke hadapan
2023-09-04 12:17:021111semak imbas

我们如何在多列上分配 FOREIGN KEY 约束?

MySQL membolehkan kami menambah kekangan KUNCI ASING pada berbilang lajur dalam jadual. Syaratnya ialah setiap kunci asing dalam jadual anak mesti merujuk kepada jadual induk yang berbeza.

Contoh

Andaikan kita mempunyai jadual bernama 'customer2' yang mempunyai kekangan kunci utama pada medan 'cust_unq_id' seperti yang ditunjukkan di bawah -

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)

Kita sudah mempunyai jadual bernama order1 yang sudah Terdapat kekangan kunci asing pada medan 'Cust_id', yang merujuk kepada 'pelanggan' jadual induk.

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)

Kini, dengan bantuan pertanyaan ALTER TABLE berikut, kita boleh menambah satu lagi kekangan kunci asing pada medan "cust_unq_id" yang merujuk kepada jadual induk "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)

Seperti yang dapat dilihat daripada set hasil di atas, jadual "pesanan1" mempunyai dua Terdapat dua kekangan kunci asing, satu pada "cust_id" dan satu lagi pada "cust_unq_id" kekangan kunci asing.

Atas ialah kandungan terperinci Bagaimanakah kita boleh mengedarkan kekangan UTAMA ASING pada berbilang lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam