Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL 테이블의 둘 이상의 필드에 FOREIGN KEY 제약 조건을 어떻게 추가할 수 있습니까?

<시간/>

MySQL을 사용하면 테이블에서 둘 이상의 필드에 FOREIGN KEY 제약 조건을 추가할 수 있습니다. 조건은 자식 테이블의 각 외래 키가 다른 부모 테이블을 참조해야 한다는 것입니다.

예시

다음과 같이 'cust_unq_id' 필드에 대한 기본 키 제약 조건이 있는 'customer2' 테이블이 있다고 가정합니다. -

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)

그리고 이미 'customer' 상위 테이블을 참조하는 'Cust_id' 필드에 외래 키 제약 조건이 있는 테이블 orders1이 있습니다.

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)

이제 ALTER TABLE 쿼리를 사용하여 상위 테이블 'customer2'를 참조하는 'cust_unq_id' 필드에 다른 외래 키 제약 조건을 추가할 수 있습니다.

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)

위의 결과 집합에서 'orders1' 테이블에는 'cust_id'에 하나와 'cust_unq_id' 외래 키 제약 조건에 대한 두 개의 테이블이 있음을 알 수 있습니다.