首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何防止Postgresql中的链接列表中的循环引用?

如何防止Postgresql中的链接列表中的循环引用?
EN

Stack Overflow用户
提问于 2021-06-28 02:17:27
回答 1查看 244关注 0票数 0

表和有效数据如下所示:

代码语言:javascript
运行
AI代码解释
复制
| id | after_id |
| -- | -------- |
| a  | null     |
| b  | a        |
| c  | b        |
| d  | c        |

我们的目标是防止这样的事情发生

代码语言:javascript
运行
AI代码解释
复制
| id | after_id |
| -- | -------- |
| a  | d        | <- 'a' now follows 'd', creating a loop.
| b  | a        |
| c  | b        |
| d  | c        |

如果不存储一些有助于创建约束的附加信息,似乎就不可能解决这一问题。但我不知道什么信息会有帮助。Postgresql有EXCLUDE约束,我认为可能会以某种方式使用重叠操作符。不知道如何解决这个问题,但我有一种感觉,它需要更新太多的行,这将破坏在链接列表中存储序列的全部意义。

UPD:这样做是为了确保列表在数据库级别上的完整性,而不是应用程序级别。另一个无效状态的示例:

代码语言:javascript
运行
AI代码解释
复制
| id | after_id |
| -- | -------- |
| a  | null     |
| b  | d        | <- updated
| c  | b        |
| d  | c        |

或者另一个:

代码语言:javascript
运行
AI代码解释
复制
| id | after_id |
| -- | -------- |
| a  | null     |
| b  | d        | <- updated: followed 'a', now follows 'd'
| c  | b        |
| d  | c        |
| e  | a        | <- updated: followed 'd', now follows 'a', unique constraint on after_id will not be violated this way
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-28 04:13:27

这篇文章似乎和你的问题有关。它谈到了避免圈圈,并为此设置了一个触发器。

另外,如果您正在查看PostgreSQL 14,可能会有一个检测周期的本机查询

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68161627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档