欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sql server CASCADE 添加级联删除和级联更新(详细版)

程序员文章站 2024-02-20 10:54:53
...

我佛了 百度了这么久没见几个说清楚的

1.什么是级联删除和级联更新

首先 解释主键和外键
打个比方
创建两个表 一个叫法术表(冰枪术 火球术) 一个叫法术效果表 ( 冻结 爆炸)
表一

ID 法术名称
1 冰枪术
2 火球术

表二

ID 效果名称 法术ID
1 冻结 1
2 爆炸 2

将表1的ID关联表2的法术ID

表一ID是主键 表二法术ID为外键 这样仅仅使用一个法术ID就可以代表冰枪术和火球术了

(以及后面一连串可能出现的复杂数据)

这个时候 假如要删除表一火球术那一行 只在法术表内删除是不行的 系统会报错

正常的程序是先删除法术Id那一行 也就是外键 再删除 主键

这个时候就需要用到级联删除

级联删除 就是只需要删除表1火球术那一行 表2爆炸那一行的数据也会一并删除

下面是sql代码
如果有两个表了 要添加级联删除和级联更新功能 就需要使用 sql代码进行添加

直接使用的话 需要因地制宜的改几个地方

外键表:相当法术效果表
外键:相当于表二 法术ID
主键表:法术表
主键:相当于 表一ID
外键关系的名称:可以自定义 你自己看得懂就行 如:FK_Fire_CASCADE
(只需要改中文的地方)


ALTER TABLE [dbo].[外键表] ADD
        CONSTRAINT [外键关系的名称 ] FOREIGN KEY
        (
                [外键]
        ) REFERENCES [dbo].[主键表] (
                [主键表名称]
        ) ON UPDATE CASCADE ON DELETE CASCADE**