JSON 内的 PostgreSQL 自动递增

PostgreSQL Auto-increment inside a JSON

是否可以仅使用 SQL(如 serial)和在 PostgreSQL 的新 JSON 类型中自动递增不是服务器代码?

我真的无法想象你为什么想要,但是可以。

CREATE SEQUENCE whywouldyou_jsoncol_seq;

CREATE TABLE whywouldyou (
    jsoncol json not null default json_object(ARRAY['id'], ARRAY[nextval('whywouldyou_jsoncol_seq')::text]),
    dummydata text;
);

ALTER SEQUENCE whywouldyou_jsoncol_seq OWNED BY whywouldyou.jsoncol;

insert into whywouldyou(dummydata) values('');

select * from whywouldyou;

   jsoncol    | dummydata 
--------------+-----------
 {"id" : "1"} | 
(1 row)

请注意,对于这个特定的公式,它是 字符串 "1" 而不是 json 中的数字 1。如果你想避免这种情况,你可能想以另一种方式形成 json 对象。这只是一个例子。