相关疑难解决方法(0)

SQL Server - 使用递归外键级联DELETE

我花了很多时间试图弄清楚如何在SQL Server上为递归主键实现CASCADE ON DELETE一段时间了.我已经阅读了有关触发器,创建临时表等的信息,但还没有找到适用于我的数据库设计的答案.

这是一个Boss/Employee数据库示例,可用于演示目的:

TABLE employee
id|name     |boss_id
--|---------|-------
1 |John     |1
2 |Hillary  |1
3 |Hamilton |1
4 |Scott    |2
5 |Susan    |2
6 |Seth     |2
7 |Rick     |5
8 |Rachael  |5
Run Code Online (Sandbox Code Playgroud)

如您所见,每位员工都有一名也是员工的老板.所以,id/boss_id上存在PK/FK关系.

这是一个(缩写)表及其信息:

TABLE information
emp_id|street     |phone
------|-----------|-----
2     |blah blah  |blah
6     |blah blah  |blah
7     |blah blah  |blah
Run Code Online (Sandbox Code Playgroud)

employee.id/information.emp_id上有一个带有CASCADE ON DELETE的PK/FK.

例如,如果Rick被解雇,我们会这样做:

DELETE FROM employee WHERE id=7
Run Code Online (Sandbox Code Playgroud)

这应该从员工和信息中删除Rick的行.Yay级联!

现在,说我们经历了艰难时期,我们需要奠定汉密尔顿和他的整个部门.这意味着我们需要删除

  • 汉密尔顿
  • 斯科特
  • 苏珊
  • 赛斯
  • 干草堆
  • 瑞秋

我们运行时从员工和信息表中:

DELETE FROM employee WHERE id=3 …
Run Code Online (Sandbox Code Playgroud)

sql sql-server recursion cascade constraints

5
推荐指数
2
解决办法
6703
查看次数

标签 统计

cascade ×1

constraints ×1

recursion ×1

sql ×1

sql-server ×1