问题标签 [postgresql-9.5]

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 投票
1 回答
1673 浏览

arrays - 将 JSONB_ARRAY_ELEMENTS 结果分配给 VARCHAR 数组

当尝试将JSONB_ARRAY_ELEMENTS调用的结果分配给VARCHAR 数组(供以后在SELECT ... WHERE IN (UNNEST(...))语句中使用)时,以下存储函数:

不幸的是打印错误:

所以我试图通过使用ARRAY_AGG来修复分配-

但得到语法错误:

请问如何将JSONB_ARRAY_ELEMENTS结果存储到数组中?

更新:

我听从了尼克的建议(谢谢),但现在卡在下一步:

尝试在SELECT ... WHERE IN ...语句中使用数组时:

0 投票
1 回答
69 浏览

postgresql - 与 Postgres 一起安装 Monetdb

我不确定这是否是正确的地方,但是,如果我在已经安装了 postgres 的 ubuntu 上安装 Monetdb 会导致问题吗?我知道它会争夺系统资源,但我的意思是它会导致其他问题。

0 投票
2 回答
61 浏览

sql - 如何编写一个 SQL 查询,其 where 子句包含在另一个查询中?

我有两张桌子,一张用于客户,一张用于物品。

在 Customer 中,我有一个名为“preference”的列,它存储了一个硬标准列表,该列表表示为WHERESQL 中的一个子句,例如"item.price<20 and item.category='household'".

我想要一个像这样工作的查询:

这被翻译成这样:

示例数据模型:

我查找了强制转换和动态 SQL,但我无法弄清楚我应该如何做到这一点。

我正在使用 PostgreSQL 9.5.1

0 投票
3 回答
709 浏览

postgresql - 如何确保存储的函数始终返回 TRUE 或 FALSE?

使用以下存储功能,我想验证用户数据:

我将在循环访问另一个存储函数中的 JSON 对象数组时调用它 -RAISE EXCEPTION如果它返回FALSE任何 JSON 对象(从而回滚整个事务),我将调用它。

我没有在此处转储我的第二个存储函数的源代码,而是在下面准备了 3 个简单的测试函数 -

第一个功能按预期工作并打印valid user.

第二个功能按预期工作并打印invalid user

第三个功能无法按预期工作并打印valid user.

发生这种情况是因为check_user()返回NULL而不是布尔值。

COALESCE可以在-statement中围绕check_user()调用...但是是否有更好的方法来解决这个问题?IF

0 投票
0 回答
398 浏览

python - 如何避免在 Postgresql 中的“INSERT [...] ON CONFLICT [...]”上不必要的序列增量?

看来,一旦INSERT运行该子句,我的序列值就会增加,并且不会回滚到以前的数字。有什么办法可以避免增加序列号?

我正在尝试从 CSV 填充表,在尚未添加它们的地方插入行,并且除了返回 ID(如果它们已经添加)之外什么都不做(可能有更好的方法来做到这一点):

0 投票
2 回答
2406 浏览

node.js - 检查 PostgreSQL v9.5+ 中的 jsonb 对象内部是否存在密钥

我有一个简单的查询来检查 jsonb 对象中是否存在密钥

我在这个查询中遇到了 2 个问题:

1)如果我通过'foo'as$1但失败了"'foo'"and ,它工作正常"'foo'->'bar'"。所以我不知道如何达到深键。我用node-postgres

2)我只想检查密钥是否存在,而不是通过该密钥获取所有数据。

所以问题是:如何在不通过该键获取所有数据的情况下检查密钥是否存在于 jsonb 对象的深处?

0 投票
3 回答
647 浏览

postgresql-9.5 - 如何使用 INSERT .. ON CONFLICT 确定 UPSERT 操作?

我希望能够知道INSERTUPDATE执行INSERT .. ON CONFLICT. 也许作为子查询的一部分作为RETURNING子句的一部分?

大约一个月前似乎有类似的请求,Peter Geoghegan 回应说通过某种黑客攻击可能是可能的。如果有人有任何想法,我现在很想听听。

0 投票
1 回答
2226 浏览

postgresql - Postgres UPSERT 对任何约束

在 MySQL 中,我们可以对任何违反约束的情况执行以下操作

无论如何在 Postgres 中这样做?

注意:* = 任何可能的键

为什么这是一个重要的功能?

  • 我想让这个代码在多个表中通用。所以,我不能按照当前的 Postgres 9.5 语法指定键(有人可能会争辩,我可以将键存储在所有表上并动态更改键。首先它不优雅,并且存在以下问题)
  • 当应用程序运行时,可以在运行时添加一些新的独特约束。因此,您不能在编译时在代码中指定它
  • 另一种选择是:在您的应用程序中,您首先尝试插入,当出现重复键错误时,您捕获它并尝试进行更新。这真的很糟糕,因为这是
    1. 不是原子操作
    2. 应用服务器和数据库服务器之间的延迟加倍。
    3. 无法批量插入
0 投票
1 回答
167 浏览

arrays - 检查表中 varchar[] 和 varchar[][] 列的约束

对于文字游戏,我正在尝试向数组添加CHECK约束:VARCHAR

但得到语法错误:

可能是因为ALL关键字应该在右侧?

谁能推荐一种在这里实施检查约束的方法?

0 投票
11 回答
108479 浏览

postgresql - 在 ON CONFLICT 子句中使用多个冲突目标

我在表中有两列col1col2它们都是唯一索引(col1 是唯一的,col2 也是唯一的)。

我需要插入此表,使用ON CONFLICT语法并更新其他列,但我不能在conflict_target子句中同时使用这两个列。

有用:

但是如何为多个列执行此操作,如下所示: