【发布时间】:2015-09-03 14:02:40
【问题描述】:
是否可以仅使用 SQL(如 serial)而不是服务器代码在 PostgreSQL 的新 JSON 类型中自动递增?
【问题讨论】:
-
我能想到的唯一方法是通过使用序列填充该属性的触发器
-
你能提供一个例子/伪代码吗?
标签: json postgresql auto-increment postgresql-9.4
是否可以仅使用 SQL(如 serial)而不是服务器代码在 PostgreSQL 的新 JSON 类型中自动递增?
【问题讨论】:
标签: json postgresql auto-increment postgresql-9.4
我真的无法想象你为什么想要,但可以肯定。
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)
请注意,对于这个特殊的公式,它是 string "1" 而不是 json 中的数字 1。如果您想避免这种情况,您可能希望以另一种方式形成 json 对象。这只是一个例子。
【讨论】: