GORM中Reference与Foreign Key的作用及区别技术咨询
GORM中外键(Foreign Key)与引用(Reference)的作用及区别
1. Foreign Key的作用
- 外键是当前模型里用于和其他模型建立关联的字段,它存储着关联目标模型的主键值(或自定义关联字段值)
- 为GORM提供关联查询、操作的依据,比如通过外键能快速查询当前记录所属的关联数据,实现预加载、关联更新等功能
- GORM默认遵循「所属模型名+ID」的规则生成外键(比如
User关联Company时,外键默认是CompanyID),也支持自定义外键字段
2. Reference的作用
- 用来指定外键所关联的目标模型中的参照字段,默认情况下GORM会关联目标模型的
ID字段,若目标模型用了非ID的主键或自定义关联字段,可通过Reference明确指定 - 在创建或维护关联关系时,
Reference用于绑定当前记录与目标模型记录的关联逻辑,确保外键字段能正确映射到目标模型的指定字段 - 比如目标模型
Company用UUID作为主键时,可通过Reference("UUID")指定外键关联的是该字段
3. Foreign Key与Reference之间的区别
- 存储位置不同:Foreign Key是当前模型(表)中的字段,存的是关联目标的字段值;Reference是目标模型(表)中的字段,是外键指向的参照对象
- 作用角色不同:Foreign Key是关联关系的「载体」,负责存储关联标识;Reference是关联关系的「基准」,定义了外键要匹配的目标字段规则
- 配置层面不同:Foreign Key是在当前模型中声明的关联字段,可自定义字段名;Reference是在关联操作或模型关联定义中指定的目标字段,用于修正默认的关联参照规则
内容的提问来源于stack exchange,提问作者Sepehr
相关产品推荐
相关产品推荐

