SQL - 在一个查询中递归删除?
SQL - Recursive delete in one query?
假设我有这样的数据库:
- 文件夹(有 "parent folder" 列)
- 文件(有 "folder" 列)
有没有办法在一个查询中删除包含子文件夹的文件夹中的所有文件?
示例:
- 文件夹:
- id,name,parent
- 1,文件夹 1,0
- 2,文件夹 2,1
- 3,文件夹 3,2
- 文件:
- 名称、文件夹
- 文件 1、2
然后我尝试删除 folder1。该单个查询应删除文件夹 2 和文件夹 3 中的所有文件,因为文件夹 2 在文件夹 1 下,而文件夹 2 在文件夹 1 下。
** 我知道我可以将其作为递归脚本来执行,但我想更多地自学
正如@jarlh 所建议的,一个非常好的解决方案是拥有一个外键,并带有删除级联。
假设我有这样的数据库:
- 文件夹(有 "parent folder" 列)
- 文件(有 "folder" 列)
有没有办法在一个查询中删除包含子文件夹的文件夹中的所有文件?
示例:
- 文件夹:
- id,name,parent
- 1,文件夹 1,0
- 2,文件夹 2,1
- 3,文件夹 3,2
- 文件:
- 名称、文件夹
- 文件 1、2
然后我尝试删除 folder1。该单个查询应删除文件夹 2 和文件夹 3 中的所有文件,因为文件夹 2 在文件夹 1 下,而文件夹 2 在文件夹 1 下。
** 我知道我可以将其作为递归脚本来执行,但我想更多地自学
正如@jarlh 所建议的,一个非常好的解决方案是拥有一个外键,并带有删除级联。