我正在尝试postgres中对json(和jsonb)的支持,目前困扰我的问题是如何追加到json数组中--我可以用jsonb来完成,但无法确定是否可以开箱即用。
在jsonb:
CREATE TABLE OrderData (
uuid text NOT NULL PRIMARY KEY UNIQUE,
info jsonb NOT NULL
);
INSERT INTO orderdata
VALUES('abcd','[{"items": {"product": "Jelly","qty": 1});
UPDATE orderdata SET info = info || '{"items": {"product": "Grape","qty": 10}}'::jsonb WHERE uuid LIKE 'abcd';
上面的代码运行良好,我可以执行SELECT * FROM orderdata;
来查看更新。
当我对json做同样的事情时-我可以让它开始:
CREATE TABLE OrderData (
uuid text NOT NULL PRIMARY KEY UNIQUE,
info json NOT NULL
);
INSERT INTO orderdata
VALUES('abcd','{"items": {"product": "Jelly","qty": 1}}'));
但是我不能使用||
操作符,因为它在json上不起作用(只在jsonb上)。
1条答案
按热度按时间mwecs4sa1#
由于您坚持使用
json
,因此每次要执行一些有用的操作时,都必须将列强制转换为jsonb
:Postgres会自动将
=
右侧表达式的结果转换回赋值语句中的JSON。