首页 > 解决方案 > PostgreSQL 外部数据包装器模仿约束

问题描述

使用 PostgreSQL 9.6.9

使用 Postgres 外部数据包装器https://github.com/postgres/postgres/blob/e1ae40f381d0582981b1e63856bd4b060cfe2d53/src/test/regress/expected/foreign_data.out#L692-L711时,约束似乎不可用。

  • 外部表不支持主键约束
  • 外表不支持外键约束
  • 外部表不支持唯一约束

我想运行一个按主键分组的查询,并在同一个表中选择其他一些列。当主键约束不存在时,查询不起作用。 https://www.postgresql.org/docs/current/sql-select.html#SQL-GROUPBY

如果分组列(或其子集)是包含未分组列的表的主键,则存在功能依赖性。

简单的解决方案是将其他列添加到 GROUP BY,但技术债务使这成为另一个挑战。

即使无法强制执行约束,是否有办法模仿或部分启用约束以使查询有效?

标签: sqlpostgresqlconstraintsforeign-data-wrapper

解决方案


不,您必须将其他列添加到GROUP BY子句中。我假设您所说的“技术债务”是指需要键入所有列。使用智能文本编辑器!


推荐阅读