You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中外键关联父子表时UPDATE/DELETE的默认动作是什么?

PostgreSQL外键UPDATE/DELETE操作的默认动作说明

你的猜测完全正确!在PostgreSQL中,当子表通过外键关联父表时,UPDATE和DELETE操作的默认动作确实是NO ACTION。

可能你会疑惑它和RESTRICT的区别,这里简单梳理下:

  • NO ACTION是在SQL语句执行完成后才检查外键约束,如果此时发现有违反约束的情况(比如删除父表记录后子表还有关联数据),才会抛出错误并回滚操作
  • RESTRICT则是在语句执行过程中就进行约束检查,一旦发现会违反外键的操作,立刻终止执行

下面把所有可选动作的具体作用列出来,方便你参考:

  • NO ACTION:默认行为,不主动修改子表数据,但会在语句结束时校验约束,违反则报错
  • RESTRICT:直接阻止任何会破坏外键约束的UPDATE/DELETE操作,检查时机更早
  • CASCADE:父表的记录被更新或删除时,子表中对应的关联记录会同步执行相同的UPDATE/DELETE操作
  • SET NULL:父表记录变动时,子表的关联字段会被设为NULL(前提是子表该字段允许NULL值)
  • SET DEFAULT:父表记录变动时,子表的关联字段会被设为预先定义的默认值(前提是子表该字段有默认值配置)

内容的提问来源于stack exchange,提问作者yodabar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:06:24