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

如何设置外键约束使删除子表记录不删除主表记录

关于外键ON DELETE CASCADE的触发逻辑澄清
  • 明确结论:子表的外键约束绝对不会出现「删除子表记录时删除对应主表记录」的情况,你之前的理解是完全正确的。
  • ON DELETE CASCADE的触发方向是主表→子表:只有当你删除主表MOTRIP中的某条记录时,数据库才会自动级联删除所有关联的子表PTINSPECTION中UID_MOTRIP匹配的记录。反过来,删除子表PTINSPECTION的记录时,主表MOTRIP的对应记录不会有任何变化——这是外键约束的核心逻辑:子表依赖主表的主键,主表并不依赖子表。
  • 你创建的这条外键约束完全符合你的需求:
    ALTER TABLE [dbo].[PTINSPECTION] WITH CHECK 
        ADD CONSTRAINT [FK_PTINSPECTION_MOTRIP] 
            FOREIGN KEY([UID_MOTRIP])
            REFERENCES [dbo].[MOTRIP] ([UID_MOTRIP])
            ON DELETE CASCADE
    
  • 那些声称「删子表会删主表」的回复要么是搞反了外键的依赖方向,要么是混淆了反向约束的场景(比如有人错误地在主表上创建了指向子表的外键,但这种设计本身违背了主从表的逻辑)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:18:13