让我们假设你有一个像数据:
CREATE TABLE test1(id INT NOT NULL, data JSONB);
INSERT INTO test1(id, data)
VALUES (1,'{"name": "test name",
"age": 46,
"heartrate": 211}'),
(2,'{"name": "test name2",
"age": 50,
"heartrate": 200,
"heartrateminuseage": 1000}');
要计算"heartrateminuseage"
,你可以先用提取物值,并使用jsonb_set
设置:
SELECT id, data
,jsonb_set(data,'{"heartrateminuseage"}',
to_jsonb((data->>'heartrate')::int - (data ->>'age')::int),
true) AS data_2
FROM test1;
输出:
至于calculated column
:
- 创建视图
CREATE VIEW wv_test1
AS
SELECT id
,jsonb_set(data,'{"heartrateminuseage"}',
to_jsonb((data->>'heartrate')::int - (data ->>'age')::int),
true) AS data
FROM test1;
- 创建触发器,将更新列
- 创建函数
更多信息:Computed/calculated columns in PostgreSQL and Store common query as column?