外键配置
外键(Foreign Key)是 PostgreSQL 数据库中用于建立和维护两个表之间关系的重要约束。通过外键约束,可以确保数据的引用完整性,防止无效数据的插入和更新。
配置外键
可以通过控制台或 SQL 语句配置外键约束。控制台适合常规建表和字段配置场景,SQL 适合批量变更、迁移脚本和更复杂的约束配置。
- 控制台操作
- SQL 语句操作
- 进入 云开发平台/PostgreSQL 数据库/数据库表 管理页面。
- 选择目标环境和数据表。
- 点击「新建列」,或编辑现有列。
- 在列配置中勾选「设置为外键」。
- 选择关联库表和关联字段,并配置删除规则、更新规则等参数。
- 确认配置后提交,等待外键约束创建完成。
被引用字段通常需要是父表的主键或唯一字段。如果删除规则选择「设为 NULL」,子表中的外键字段需要允许 NULL。
可以在创建表时定义外键,也可以对已有表追加外键约束。以下示例均为 PostgreSQL 标准 SQL 语句。
创建表时定义外键:
CREATE TABLE public.departments (
id bigint GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name text NOT NULL
);
CREATE TABLE public.users (
id bigint GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name text NOT NULL,
department_id bigint,
CONSTRAINT fk_user_department
FOREIGN KEY (department_id)
REFERENCES public.departments (id)
ON DELETE SET NULL
ON UPDATE NO ACTION
);
对已有表追加外键:
ALTER TABLE public.users
ADD CONSTRAINT fk_user_department
FOREIGN KEY (department_id)
REFERENCES public.departments (id)
ON DELETE SET NULL
ON UPDATE NO ACTION;
外键创建前,已有数据必须满足引用完整性:子表外键字段的值需要存在于父表被引用字段中,或为允许的 NULL 值。PostgreSQL 不会自动为子表外键字段创建索引;如果该字段经常用于关联查询、筛选或父表删除检查,建议单独创建索引。
外键配置参数
| 参数名称 | 说明 | 是否必填 | 示例 |
|---|---|---|---|
| 外键名称 | 外键约束的名称,用于标识该外键 | 是 | fk_user_department |
| 关联库表 | 外键引用的父表名称 | 是 | departments |
| 关联字段 | 父表中被引用的字段名称 | 是 | id |
| 删除规则 | 当父表记录被删除时的处理方式 | 是 | 级联 |
| 更新规则 | 当父表关联字段被更新时的处理方式 | 是 | 无动作 |
删除和更新规则
| 规则名称 | 英文标识 | 行为说明 |
|---|---|---|
| 无动作 | NO ACTION | 如果子表中存在引用记录,则拒绝操作 |
| 限制 | RESTRICT | 与 NO ACTION 类似,立即检查并拒绝操作 |
| 级联 | CASCADE | 自动同步操作子表中所有引用该记录的数据 |
| 设为 NULL | SET NULL | 将子表中的外键字段设置为 NULL |
| 设为默认值 | SET DEFAULT | 将子表中的外键字段设置为默认值 |
提示
关于外键约束的更多详细说明和高级用法,请参阅 PostgreSQL 官方文档 - Foreign Keys。