我有数据库:
Node(nno,color)
edge(eno,head,tail,weight,gno)
graph(gno,gname)
粗体表示主键 并且graphh是直接的:head - >尾
我如何构建一个触发器来检查图表中每个插入节点是否已连接?意味着每两个节点之间有一条路径 我如何检查每两个节点之间是否有路径?
我正在使用postgreSQL
答案 0 :(得分:0)
这是一个XY问题,并且很可能使用触发器无法工作:如果要使用外键保持参照完整性(绝对合乎需要),那么根据定义,插入节点将创建一个断开连接的图,并被拒绝。 / p>
解决方案是有一个存储过程,通过该过程传递所有三个表的所有插入,并且只接受连接的图形添加。
假设给定图已经连接,那么对于要接受的给定图的扩展,扩展中的每个节点都可以连接到现有图中的任何一个节点。