26人参与 • 2025-10-11 • MsSqlserver
外键(foreign key)用于与另一张表关联,列(或一组列)中的值必须匹配另一个表的某一行中出现的值,用于保持数据的一致性。
一个外键约束指定一列(或一组列)中的值必须匹配出现在另一个表中某些行的值。我们说这维持了两个关联表之间的引用完整性。
在 postgresql 中,外键(foreign key) 是一种用于建立表间关联的数据库约束机制,其核心作用与主键(primary key)有显著区别。
customer_id 字段可以是客户表主键 id 的外键维护参照完整性:确保子表(外键所在表)的数据必须存在于父表中,避免“无效引用”。例如,订单中的客户 id 必须存在于客户表中。
级联操作支持:当父表数据更新或删除时,可自动同步子表数据。例如
create table orders (
id serial primary key,
customer_id int references customers(id) on delete cascade
); 当父表 customers 中的某行被删除,子表 orders 中关联的订单也会被级联删除。
数据关系建模:通过外键明确表间关联(如一对多、多对多关系),支持复杂查询。
| 特性 | 外键 | 主键 |
|---|---|---|
| 唯一性 | 允许重复值(只要父表存在对应值) | 值必须唯一且非空 |
| 空值处理 | 可包含 null(除非显式约束为 not null) | 不允许 null |
| 数量限制 | 一个表可有多个外键 | 一个表仅有一个主键 |
| 功能定位 | 建立表间关联 | 唯一标识表中的每行数据 |
| 约束类型 | 依赖父表的主键或唯一键 | 自身字段的唯一性和非空性 |
user_id 关联用户表,确保每个订单对应有效用户。on delete cascade);on delete cascade:当父表的行被删除时,相关的子表行也将被删除。on update cascade:当父表的主键被更新时,相关的子表行也将被更新。其他级联操作如 set null, set default, restrict 和 no action 也是可用的。on delete restrict:阻止删除父表关联数据。on update cascade:父表主键更新时同步子表外键。如需具体操作示例或约束语法细节,可参考 postgresql 官方文档。
到此这篇关于postgresql中的外键与主键操作示例的文章就介绍到这了,更多相关postgresql外键与主键内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论