如何将复合主键设为引用另一复合主键的外键?
复合主键作为外键引用另一复合主键的正确实现方法
你的问题出在单独为每个字段创建外键约束,而原表的主键是复合组合,外键必须匹配整个复合主键的字段组合与顺序,不能拆分单独约束。
正确的写法是将两个字段作为一个整体定义外键:
create table worker( id varchar(50) not null, nationality varchar(50) not null, PRIMARY KEY (id, nationality), FOREIGN KEY (id, nationality) REFERENCES Person (id, nationality) );
关键说明:
- 外键字段的顺序必须和被引用表的复合主键顺序完全一致(这里是
id在前,nationality在后) - 外键字段的数据类型、长度必须和被引用的主键字段完全匹配,否则约束无法生效
- 这种写法能保证
worker表中的每一组(id, nationality)都在Person表中存在,完美实现你需要的"复合主键特化"关系
内容的提问来源于stack exchange,提问作者JOAO VITOR PEREIRA VENTURA
相关产品推荐
相关产品推荐

