问题标签 [postgresql-9.6]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1054 浏览

postgresql - 如何以一对多关系复制另一个表的外键

我有一个三表结构tournamentgroupteam。和表具有一对多关系,tournament并且具有一对多关系,如下所示。groupgroupteam

表结构

如何将表中的值复制到tournament_id表中?groupgroup_tournament_idteam

我正在寻找一个答案,它可以使用 create 语句来实现这一点

当然这是行不通的,因为为了引用它必须是唯一的,在这种情况下,锦标赛 ID 不是唯一的

当我插入团队时,我需要一种标准方法来将tournament_idfrom的值复制group到“团队”表中group_tournament_idgroup_id insidetable

编辑:不再需要 symfony 中的答案,只需 postgreSQL 就可以了

0 投票
0 回答
1408 浏览

postgresql - 用户登录/注销时的 Postgres 事件触发器(会话开始和结束)

我正在使用事件触发器,并且可以记录创建表等操作:

您能否创建一个在用户连接(会话开始)和用户断开连接(会话结束)时执行的事件触发器。

我正在运行 PostgreSql 9.6beta4。

0 投票
1 回答
83 浏览

postgresql - 检索相关数据行的最有效方法:子查询,还是使用 GROUP BY 单独查询?

我有一个非常简单的 PostgreSQL 查询来检索最新的 50 篇新闻文章:

现在我还想检索每篇文章的最新 10 条评论。我可以想到两种方法来完成检索它们,但我不确定哪一种在 PostgreSQL 的上下文中是最好的:


选项1:

直接对原始查询中的注释进行子查询,并将结果转换为数组:

显然,在这种情况下,应用程序逻辑需要知道数组中的哪个索引是哪个列,这没有问题。

我在该方法中看到的一个问题是不知道查询计划器将如何执行它。这会有效地变成 51 个查询吗?


选项 2:

使用原始的非常简单的查询:

然后通过应用程序逻辑,收集所有新闻 ID 并在单独的查询中使用它们,这里必须使用 row_number() 以限制每篇新闻文章的结果数量:

这种方法显然更复杂,我不确定这是否必须首先检索范围内新闻文章的所有评论,然后删除行数大于 10 的评论。


哪个选项最好?或者有没有我忽略的更好的解决方案?

就上下文而言,这是我自己开发的一个新闻聚合网站,我目前有大约 40,000 篇不同类别的新闻文章,大约有 500,000 条评论,所以我正在寻找帮助我保持增长的最佳解决方案。

0 投票
1 回答
287 浏览

postgresql - Postgres 9.6 仅索引扫描

Postgres 有新版本9.6 - 我已阅读有关仅索引扫描的文档。我知道 postgres 表的堆,并且我知道部分索引(或一般索引)是如何工作的。我只是不明白仅索引的好处。

问题

  • 真正改变了什么?我们不是已经使用了仅索引扫描吗?
  • 我应该如何以及何时使用它们以获得最佳收益?

非相关背景: 我正在处理生产环境中包含大量INSERTs 和s 的 6B 行的表SELECT

0 投票
1 回答
131 浏览

postgresql - 如何将 Postgresql 9.6rc1 升级到 Postgresql 9.6

我对 PostgreSql 场景还很陌生,所以如果这是一个愚蠢的问题,请原谅我。我试图搜索这个,但我一直只找到从一个版本升级到另一个版本的问题,比如从 8.x 升级到 9.x。但就在前几天,我使用 dumpall 从 9.6beta4 升级到 9.6rc1,今天我看到 9.6 发布了,我真的不想浪费一天时间创建一个 dumpall 文件并恢复它。所以我想知道是否有“就地”升级,还是我还需要再次使用 dumpall 才能从 9.6rc1 升级到 9.6。

我的主要数据库经验是使用 Firebird 和 Sql Server,以及在升级数据库软件时不需要进行备份恢复的那些。

谢谢,爱德华

0 投票
1 回答
1356 浏览

postgresql - 在事件触发器中获取表名

我有一个在创建、更改和删除表时执行的事件触发器。

在该过程中,我想在新创建的表上创建一个触发器。

如何在事件触发器中获取表名?

我尝试按照此处的说明使用TG_TABLE_NAME ,但似乎这只适用于非事件触发器。

0 投票
0 回答
95 浏览

postgresql - PostgreSQL - DDL 语句函数参数

是否可以将 DDL 语句作为函数参数传递?

像这样的东西:

最后的声明是:

或者我应该将它们作为字符串传递并使用execute命令?

0 投票
1 回答
478 浏览

postgresql - PostgreSQL 中复合类型数组的正确 OID 是什么?

在 PostgreSQL 9.5 下,在我编写的一个 C 函数中,ARR_ELEMTYPE(PG_GETARG_ARRAYTYPE_P(0))其中 (0) 是一个复合类型数组(即由 定义CREATE TYPE),返回 28642010。这个数字没有出现在源代码中,也没有记录在案。

今天,我升级到 PG 9.6,我的 C 函数抛出了错误。elemtype 现在报告为 16396。这也不会出现在源代码中。

我在 wiki 和源代码中搜索了十进制和十六进制的两个数字。

我看不出a)源代码中没有定义OID,b)数字随着PG的变化而变化。

我在这里错过了什么吗?

0 投票
1 回答
108 浏览

postgresql - PostgreSQL:从 C 函数中获取序列 nextval

我编写了以下内容来获取序列中的下一个值。它完美地工作:

但是,肯定有一个函数调用我可以不必通过 SPI 进行吗?

0 投票
1 回答
1517 浏览

postgresql - PostgreSQL Upsert(冲突时)在插入和更新中具有相同的值

当我在 Insert... On Conflict 语句中使用相同的值时,我可以简化语法吗?

此类语句还有很多,因为它们是在每次应用程序更新时运行的脚本的一部分。

基本上,我正在寻找一种不两次指定相同值的方法。