我正在设置一个 PostgreSQL 数据库,并且想要创建一个约束来检查值(来自单个表中的不同行)是否是连续的。
该表如下所示:
+-------------+---------+-------+
| waypoint_id | path_id | order |
+-------------+---------+-------+
| 89 | 1 | 1 |
| 16 | 1 | 2 |
| 17 | 1 | 3 |
| 19 | 1 | 4 |
| 4 | 1 | 5 |
| 75 | 2 | 1 |
| 28 | 2 | 2 |
| 2 | 2 | 3 |
+-------------+---------+-------+
它是一个表格,用于存储某条路径的航点顺序。
- waypoint_id是存储航点坐标的表的 ForeignKey 。
- path_id是存储有关路径信息(什么类型的路径等)的表的 ForeignKey 。
- order是一个整数,用于存储特定路径中的航点的顺序。
- PrimaryKey 是所有 3 列的组合。
约束必须检查 order 列中的值(具有相等的 path_id)是否是连续的。
这是一个无效的示例:(顺序不连续,因为缺少 3)
+-------------+---------+-------+
| waypoint_id | path_id | order |
+-------------+---------+-------+
| 21 | 1 | 1 |
| 29 | 1 | 2 |
| 104 | 1 | 4 |
+-------------+---------+-------+
我希望约束不允许插入该行:
| 104 | 1 | 4 |
请向我展示类似问题的解决方案示例,或向我指出如何解决问题的文档。