问题标签 [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.
arrays - 将 JSONB_ARRAY_ELEMENTS 结果分配给 VARCHAR 数组
当尝试将JSONB_ARRAY_ELEMENTS调用的结果分配给VARCHAR 数组(供以后在SELECT ... WHERE IN (UNNEST(...))
语句中使用)时,以下存储函数:
不幸的是打印错误:
所以我试图通过使用ARRAY_AGG来修复分配-
但得到语法错误:
请问如何将JSONB_ARRAY_ELEMENTS
结果存储到数组中?
更新:
我听从了尼克的建议(谢谢),但现在卡在下一步:
尝试在SELECT ... WHERE IN ...
语句中使用数组时:
postgresql - 与 Postgres 一起安装 Monetdb
我不确定这是否是正确的地方,但是,如果我在已经安装了 postgres 的 ubuntu 上安装 Monetdb 会导致问题吗?我知道它会争夺系统资源,但我的意思是它会导致其他问题。
sql - 如何编写一个 SQL 查询,其 where 子句包含在另一个查询中?
我有两张桌子,一张用于客户,一张用于物品。
在 Customer 中,我有一个名为“preference”的列,它存储了一个硬标准列表,该列表表示为WHERE
SQL 中的一个子句,例如"item.price<20 and item.category='household'"
.
我想要一个像这样工作的查询:
这被翻译成这样:
示例数据模型:
我查找了强制转换和动态 SQL,但我无法弄清楚我应该如何做到这一点。
我正在使用 PostgreSQL 9.5.1
postgresql - 如何确保存储的函数始终返回 TRUE 或 FALSE?
使用以下存储功能,我想验证用户数据:
我将在循环访问另一个存储函数中的 JSON 对象数组时调用它 -RAISE EXCEPTION
如果它返回FALSE
任何 JSON 对象(从而回滚整个事务),我将调用它。
我没有在此处转储我的第二个存储函数的源代码,而是在下面准备了 3 个简单的测试函数 -
第一个功能按预期工作并打印valid user
.
第二个功能按预期工作并打印invalid user
。
第三个功能无法按预期工作并打印valid user
.
发生这种情况是因为check_user()
返回NULL
而不是布尔值。
COALESCE
可以在-statement中围绕check_user()
调用...但是是否有更好的方法来解决这个问题?IF
python - 如何避免在 Postgresql 中的“INSERT [...] ON CONFLICT [...]”上不必要的序列增量?
看来,一旦INSERT
运行该子句,我的序列值就会增加,并且不会回滚到以前的数字。有什么办法可以避免增加序列号?
我正在尝试从 CSV 填充表,在尚未添加它们的地方插入行,并且除了返回 ID(如果它们已经添加)之外什么都不做(可能有更好的方法来做到这一点):
node.js - 检查 PostgreSQL v9.5+ 中的 jsonb 对象内部是否存在密钥
我有一个简单的查询来检查 jsonb 对象中是否存在密钥
我在这个查询中遇到了 2 个问题:
1)如果我通过'foo'
as$1
但失败了"'foo'"
and ,它工作正常"'foo'->'bar'"
。所以我不知道如何达到深键。我用node-postgres
2)我只想检查密钥是否存在,而不是通过该密钥获取所有数据。
所以问题是:如何在不通过该键获取所有数据的情况下检查密钥是否存在于 jsonb 对象的深处?
postgresql-9.5 - 如何使用 INSERT .. ON CONFLICT 确定 UPSERT 操作?
我希望能够知道INSERT
在UPDATE
执行INSERT .. ON CONFLICT
. 也许作为子查询的一部分作为RETURNING
子句的一部分?
大约一个月前似乎有类似的请求,Peter Geoghegan 回应说通过某种黑客攻击可能是可能的。如果有人有任何想法,我现在很想听听。
postgresql - Postgres UPSERT 对任何约束
在 MySQL 中,我们可以对任何违反约束的情况执行以下操作
无论如何在 Postgres 中这样做?
注意:* = 任何可能的键
为什么这是一个重要的功能?
- 我想让这个代码在多个表中通用。所以,我不能按照当前的 Postgres 9.5 语法指定键(有人可能会争辩,我可以将键存储在所有表上并动态更改键。首先它不优雅,并且存在以下问题)
- 当应用程序运行时,可以在运行时添加一些新的独特约束。因此,您不能在编译时在代码中指定它
- 另一种选择是:在您的应用程序中,您首先尝试插入,当出现重复键错误时,您捕获它并尝试进行更新。这真的很糟糕,因为这是
- 不是原子操作
- 应用服务器和数据库服务器之间的延迟加倍。
- 无法批量插入
arrays - 检查表中 varchar[] 和 varchar[][] 列的约束
对于文字游戏,我正在尝试向数组添加CHECK
约束:VARCHAR
但得到语法错误:
可能是因为ALL
关键字应该在右侧?
谁能推荐一种在这里实施检查约束的方法?
postgresql - 在 ON CONFLICT 子句中使用多个冲突目标
我在表中有两列col1
,col2
它们都是唯一索引(col1 是唯一的,col2 也是唯一的)。
我需要插入此表,使用ON CONFLICT
语法并更新其他列,但我不能在conflict_target
子句中同时使用这两个列。
有用:
但是如何为多个列执行此操作,如下所示: