我需要遍历并更新 SQL 中的图形。
为了将其纳入预期,我将举一个例子:
- 每个公司都可以在特定主题上代表其他公司。
- 公司可以相互代表,但不能代表同一主题
这假设表格如下:
companies(id)
, representations(source_id, destination_id, subject)
.
但规则是,当我的公司不再代表您的公司处理特定主题时,我的下游公司就不能代表我的公司处理同一主题。
我希望你明白我的意思。
因此,使用简单的数据,例如:
C1:
--sell--> C2
--pay--> C3
C2:
--sell--> C3
--pay--> C1
C3:
--mail--> C1
--sell--> C4
C4:
--deliver-->C1
现在,我们删除表示(我应该称之为关系)C2--sell-->C3
我们应该最终得到以下结构([X]
- 删除):
C1:
--sell--> C2
--pay--> C3
C2:
[X]--sell--> C3
--pay--> C1
C3:
--mail--> C1
[X]--sell--> C4
C4:
--deliver-->C1
所以问题是如何才能选择所有的公司,这些公司在我的链下为一个给定的主题?
我想递归 CTE 表达式是唯一的方法。
笔记:
- 该结构不是一棵树,它是一个有序循环图。
- 图形数据库现在不是一个选项(这只是系统的一小部分)
- 更新不需要立即进行,它们最终保持一致是可以的(大约几秒钟到几分钟)。