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**