后端、数据与安全 核心 B · 官方指南或术语 平台: 网页

Foreign Key

外键

外键是一条数据库规则,要求某个字段必须指向同一张或另一张数据表中的有效键。`null` 是否可用,则按该字段的规则决定。

看看怎样运作
也有人这样说 Foreign Key引用完整性约束FK

看看怎样运作

原创情境示例外键

另一个例子

每个 `invoice_line.invoice_id` 都必须指向已存在的发票。删除草稿发票时,也会级联删除明细;已记账发票则不能删除,必须走冲销流程。批量导入会先隔离无效数据,不会永久禁用外键。

主要部分

  1. 01引用列
  2. 02被引用候选键
  3. 03更新/删除动作

什么时候用

当数据库中的关系绝不能指向不存在的父记录时,就使用外键,并仔细选择更新和删除行为。

什么时候不要用

在并发操作下,不要只靠应用检查。跨越数据边界进行级联删除前,也要先确认数据保留和审计义务。

代码里的名称

FOREIGN KEY (…) REFERENCES … ON UPDATE/DELETE …

上线前要检查

检查接口约定、任何情况下都不能破坏的规则、授权与输入限制。测试重试、重复执行只生效一次、超时与部分失败。验证数据完整性、兼容性、监控、恢复与回到上一版。

可以直接复制的需求

预期结果:为这套系统设计或检查 外键 (Foreign Key),并让数据保持正确、安全且容易维护。 用户场景:每个 `invoice_line.invoice_id` 都必须指向已存在的发票。删除草稿发票时,也会级联删除明细;已记账发票则不能删除,必须走冲销流程。批量导入会先隔离无效数据,不会永久禁用外键。 技术概念或控制措施:外键 (Foreign Key)。 适用理由:当数据库中的关系绝不能指向不存在的父记录时,就使用外键,并仔细选择更新和删除行为。 不应使用的情况:在并发操作下,不要只靠应用检查。跨越数据边界进行级联删除前,也要先确认数据保留和审计义务。 工程要求:定义输入、输出、接口约定,以及任何情况下都不能破坏的规则。说明授权与输入检查范围。定义失败、超时、重试和重复执行只生效一次的规则。也要定义数据迁移与兼容限制。 运营要求:加入监控信号与隐藏敏感数据的日志。设置容量上限并写好操作手册。测试恢复与回到上一版的流程。 验收标准:接口约定与失败路径测试通过。重试或部分失败时,数据与授权规则仍正确。性能上限、监控、恢复与回到上一版的方法都已验证。 证据与限制(证据边界):它只代表该来源的官方说法。其他平台或团队可能有不同用法。 待确认:程序运行环境、数据位置、流量形态、数据一致需求和安全边界。也要确认兼容周期、服务目标(SLO)与恢复上一版的限制。

检查这份需求

请 AI 编程助手检查当前如何使用 外键 (Foreign Key)。 定义:外键是一条数据库规则,要求某个字段必须指向同一张或另一张数据表中的有效键。`null` 是否可用,则按该字段的规则决定。 生产环境检查:检查接口约定、任何情况下都不能破坏的规则、授权与输入限制。测试重试、重复执行只生效一次、超时与部分失败。验证数据完整性、兼容性、监控、恢复与回到上一版。 修改程序前,先列出看到的证据、缺口、严重程度,以及最小且安全的修正。

B
这个术语有多正式?

官方指南或术语

列出的平台、框架、项目或专业组织,发布了这个术语的官方指南。

它只代表该来源的官方说法。其他平台或团队可能有不同用法。

适用范围
只包含来源有说明的内容:正式名称、定义、平台 API、实现、使用指南
文档状态
稳定
核验日期
2026-07-30

证据来源与适用范围

正式来源 + 术语参考资料 · PostgreSQL Global Development Group · 稳定 Foreign Keys 适用范围: 正式名称、定义、平台 API、实现、使用指南 本页用途: 直接术语参考 来源涵盖内容: 正式名称, 定义, 平台 API, 实现, 使用指南

自行复制

浏览器无法自动复制。请选择下方文字,再自行复制。