外键约束

物理外键

创建时指定外键:

1
2
3
4
5
create table 表名(
...,
-- 所有字段罗列完成后
constraint 外键名称 foreign key 本表字段名 references 主表(字段名)
);

创建完后添加外键

1
alter table 表名 add constraint 外键名称 foreign key 主表(字段名);

物理外键的特点

  • 增、删、改 时需要检查外键关系,影响效率
  • 不适用于 分布式、集群 场景。
  • 容易引发数据库死锁问题,消耗性能

实际开发中少用,一些公司禁用

逻辑外键

在业务逻辑上解决外键关联,通过业务代码解决数据一致性问题