匹配 MySQL/SQL 中的一对外键
Matching a pair of foreign keys in MySQL/SQL
有没有办法配对外键来匹配?
例如user_id
和 subs_id
fk 对在产品 table 中不匹配,但允许添加。
Table:用户
| user_id (PK) | first_name | last_name |
| -------------| ------------|------------|
| 000001 | David | Hawk |
| 000002 | Ali | Abdullah |
Table: 订阅
| user_id (FK) | subs_id (PK) | subs_status | total_cycles |
| -------------| -------------|-------------|--------------|
| 000001 | ABC_123456 | ACTIVE | 4 |
| 000002 | CDE_654321 | CANCELLED | 8 |
Table:产品
| user_id (FK) | subs_id (FK) | product | plan | product-key (PK) |
| -------------| ---------------|-------------|--------|------------------|
| **000001** | **CDE_654321** | Product-A | Pro | A5CD-8Z62-X2D4 |
| **000002** | **ABC_123456** | Product-B | Plus | WFE7-71W4-Z64D |
如果我没理解错的话,你有两个外键,一个在 user_id
上,一个在 subs_id
上。相反,您需要在两者的组合上有一个外键:
ALTER TABLE product
ADD CONSTRAINT prodcut_subscription_fk
FOREIGN KEY (user_id, subs_id)
REFERENCES subscription(user_id, subs_id)
有没有办法配对外键来匹配?
例如user_id
和 subs_id
fk 对在产品 table 中不匹配,但允许添加。
Table:用户
| user_id (PK) | first_name | last_name |
| -------------| ------------|------------|
| 000001 | David | Hawk |
| 000002 | Ali | Abdullah |
Table: 订阅
| user_id (FK) | subs_id (PK) | subs_status | total_cycles |
| -------------| -------------|-------------|--------------|
| 000001 | ABC_123456 | ACTIVE | 4 |
| 000002 | CDE_654321 | CANCELLED | 8 |
Table:产品
| user_id (FK) | subs_id (FK) | product | plan | product-key (PK) |
| -------------| ---------------|-------------|--------|------------------|
| **000001** | **CDE_654321** | Product-A | Pro | A5CD-8Z62-X2D4 |
| **000002** | **ABC_123456** | Product-B | Plus | WFE7-71W4-Z64D |
如果我没理解错的话,你有两个外键,一个在 user_id
上,一个在 subs_id
上。相反,您需要在两者的组合上有一个外键:
ALTER TABLE product
ADD CONSTRAINT prodcut_subscription_fk
FOREIGN KEY (user_id, subs_id)
REFERENCES subscription(user_id, subs_id)