JSONB 查询不会进入视图

JSONB query won't stick into a view

我有什么

CREATE TABLE "1".events
(
  doc jsonb,
  id character varying(36),
)

doc jsonb 字段包含一个 json 这样的

{ "id": "a", "sessions": [{"id":"1"}, {"id": "2"}, ..., {"id":"18"}] }

现在我想要一个视图,每个会话给我一行,所以我写:

select e.id, obj FROM "1".events e, jsonb_array_elements(e.doc->'sessions') obj

这很有魅力!

"e1" "{"id": "18"}"
...

相反不起作用是将此查询粘贴在视图中

create or replace view events_session_v as 
(select e.id, obj FROM "1".events e, jsonb_array_elements(e.doc->'sessions') obj)

********** Error **********

ERROR: cannot change name of view column "?column?" to "id"
SQL state: 42P16

这个创建视图有什么问题?

视图 events_session_v 已经存在,如果 return 类型要更改,您不能替换它。使用 drop view:

drop view events_session_v;

create or replace view events_session_v as 
    select e.id, obj 
    from "1".events e, jsonb_array_elements(e.doc->'sessions') obj;