问题标签 [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.
postgresql - 如何以一对多关系复制另一个表的外键
我有一个三表结构tournament
:group
和team
。和表具有一对多关系,tournament
并且具有一对多关系,如下所示。group
group
team
如何将表中的值复制到tournament_id
表中?group
group_tournament_id
team
我正在寻找一个答案,它可以使用 create 语句来实现这一点
当然这是行不通的,因为为了引用它必须是唯一的,在这种情况下,锦标赛 ID 不是唯一的
当我插入团队时,我需要一种标准方法来将tournament_id
from的值复制group
到“团队”表中group_tournament_id
group_id inside
table
编辑:不再需要 symfony 中的答案,只需 postgreSQL 就可以了
postgresql - 用户登录/注销时的 Postgres 事件触发器(会话开始和结束)
我正在使用事件触发器,并且可以记录创建表等操作:
您能否创建一个在用户连接(会话开始)和用户断开连接(会话结束)时执行的事件触发器。
我正在运行 PostgreSql 9.6beta4。
postgresql - 检索相关数据行的最有效方法:子查询,还是使用 GROUP BY 单独查询?
我有一个非常简单的 PostgreSQL 查询来检索最新的 50 篇新闻文章:
现在我还想检索每篇文章的最新 10 条评论。我可以想到两种方法来完成检索它们,但我不确定哪一种在 PostgreSQL 的上下文中是最好的:
选项1:
直接对原始查询中的注释进行子查询,并将结果转换为数组:
显然,在这种情况下,应用程序逻辑需要知道数组中的哪个索引是哪个列,这没有问题。
我在该方法中看到的一个问题是不知道查询计划器将如何执行它。这会有效地变成 51 个查询吗?
选项 2:
使用原始的非常简单的查询:
然后通过应用程序逻辑,收集所有新闻 ID 并在单独的查询中使用它们,这里必须使用 row_number() 以限制每篇新闻文章的结果数量:
这种方法显然更复杂,我不确定这是否必须首先检索范围内新闻文章的所有评论,然后删除行数大于 10 的评论。
哪个选项最好?或者有没有我忽略的更好的解决方案?
就上下文而言,这是我自己开发的一个新闻聚合网站,我目前有大约 40,000 篇不同类别的新闻文章,大约有 500,000 条评论,所以我正在寻找帮助我保持增长的最佳解决方案。
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,以及在升级数据库软件时不需要进行备份恢复的那些。
谢谢,爱德华
postgresql - 在事件触发器中获取表名
我有一个在创建、更改和删除表时执行的事件触发器。
在该过程中,我想在新创建的表上创建一个触发器。
如何在事件触发器中获取表名?
我尝试按照此处的说明使用TG_TABLE_NAME ,但似乎这只适用于非事件触发器。
postgresql - PostgreSQL - DDL 语句函数参数
是否可以将 DDL 语句作为函数参数传递?
像这样的东西:
最后的声明是:
或者我应该将它们作为字符串传递并使用execute
命令?
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的变化而变化。
我在这里错过了什么吗?
postgresql - PostgreSQL:从 C 函数中获取序列 nextval
我编写了以下内容来获取序列中的下一个值。它完美地工作:
但是,肯定有一个函数调用我可以不必通过 SPI 进行吗?
postgresql - PostgreSQL Upsert(冲突时)在插入和更新中具有相同的值
当我在 Insert... On Conflict 语句中使用相同的值时,我可以简化语法吗?
此类语句还有很多,因为它们是在每次应用程序更新时运行的脚本的一部分。
基本上,我正在寻找一种不两次指定相同值的方法。