【发布时间】:2022-03-08 19:09:57
【问题描述】:
我有一个带有jsonb 列的表,其中列默认值为null。现在,当我第一次尝试使用jsonb_set 或jsonb_insert 使用数据更新此列时,我得到UPDATE 1,但实际上,该列保持null。
我做了一个小测试用例:
CREATE SCHEMA test;
CREATE TABLE test.books (
book_id serial NOT NULL,
data jsonb
);
INSERT INTO test.books (data) VALUES (null);
INSERT INTO test.books (data) VALUES ('{}');
现在我更新两条新记录:
UPDATE test.books SET data = jsonb_set( data, '{zzz}', 'true', true) WHERE book_id = 1;
UPDATE test.books SET data = jsonb_set( data, '{zzz}', 'true', true) WHERE book_id = 2;
结果:
# select * from test.books;
book_id | data
---------+------------------------------------
2 | {"zzz": true}
1 |
(2 rows)
即使更新对两次更新产生了相同的结果,第一行仍然保持不变。
我查看了文档,但没有发现任何有关此类行为的信息。为什么它不能这样工作?
我正在使用 Postgres 9.6
【问题讨论】:
-
在 pgsql-hackers 上有 a lengthy discussion 关于这个。最后还是决定add
jsonb_set_laxin v13。
标签: postgresql jsonb