小编kag*_*ag0的帖子

使用触发器在插入或更新时将列与 json 列中的字段同步

我是一个数据库/postgres 初学者,所以请耐心等待。
如果我有一张桌子,就像这样。

CREATE TABLE testy (
    id INTEGER REFERENCES other_table,
    name varchar(128) PRIMARY KEY,
    json JSONB NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

我在寻找插入或更新,将设置列之前创建一个触发器id,并name与在相同名称字段的值json

因此,例如,如果testy包含以下内容UPDATE testy SET json = '{"id":2,"name":"jim"}' WHERE id = 1并被调用。

id | name | json
---+------+-----
 1 | "jim"| {"id":1,"name":"jim"}
Run Code Online (Sandbox Code Playgroud)

想要的结果是

id | name | json
---+------+-----
 2 | "jim"| {"id":2,"name":"jim"}
Run Code Online (Sandbox Code Playgroud)

我希望使其相当通用,因此不需要对列名进行硬编码。如果相应的 json 字段不存在,则将该列设置为 NULL 即可。到目前为止我有

CREATE TABLE testy_index (
    id INTEGER PRIMARY KEY
);

INSERT INTO testy_index VALUES …
Run Code Online (Sandbox Code Playgroud)

postgresql trigger plpgsql json postgresql-9.4

5
推荐指数
1
解决办法
5032
查看次数

标签 统计

json ×1

plpgsql ×1

postgresql ×1

postgresql-9.4 ×1

trigger ×1