如何避免 postgresql 上的递归循环

问题描述 投票:0回答:1

我的数据库中有一个名为 Videogame 的表,其中有一列提到了其前身,但由于错误,有时会发生无限循环。

创建表格视频游戏( id 序列 NOT NULL 主键, 名称 varchar(50), id_predecessor 整数引用 videogame(id), date_release日期不为空, 公司 varchar (50) );

插入视频游戏(id、名称、id_predecessor、date_release、公司)值 (10, '测试', 20, '2023-01-01', '索尼'), (12, '测试2', 10, '2023-02-01', '索尼'), (20, '测试3', 12, '2023-03-01', '索尼');

如果ID 10的数据的id_predecessor为12,ID 12的数据的id_predecessor为20,ID 20的数据的id_predecessor为10,我错误地在它们之间创建了一个循环。

我想知道一种防止这种情况的方法,也许创建一个触发器或其他东西。

postgresql triggers postgresql-9.1 postgresql-9.3 postgresql-9.4
1个回答
0
投票

使用触发器来停止“Videogame”数据库中的循环引用无疑是一个可靠的修复方法。您可以通过设计一个触发器函数来防止潜在的循环引用成为问题,该函数使用递归查询来分析行与其前辈之间的关系。通过使用这种方法,可以保证数据完整性,并且使将来处理循环引用变得更简单。

© www.soinside.com 2019 - 2024. All rights reserved.