无法在 postgresql 中为 Json 数据创建生成列

Unable to make generated column in postgresql for Json data

我正在尝试使用 postgres-12 生成列。我需要创建一个 table,生成的列包含 JSON 数据。我将在那里接收“名称”字段作为键。但是,这样做时 - 我遇到了以下错误:

   postgres=# create table json_tab2 (data jsonb ,
   postgres(#  "json_tab2.pname" text generated always as (data ->> "name"  ) stored
   postgres(#  );
   ERROR:  column "name" does not exist
   LINE 2: ...on_tab2.pname" text generated always as (data ->> "name"  ) ...

在此之后:我尝试更改现有的 table- 因为它对生成列的 json 数据有价值 - 所以它现在应该能够识别“名称”。这次我在运行下面:

  postgres=# alter table json_tab add column Pname text  generated always as (data ->> "name") stored 
   ;
   ERROR:  column "name" does not exist

但是,“名称”在这里有价值:

                         data
  -------------------------------------------------
   {"age": 31, "city": "New York", "name": "John"}

我无法理解 - 我在这里做错了什么

->> 运算符的右侧应该是一个值。在这种情况下,由于它是一个字符串,因此需要用单引号将其括起来('):

create table json_tab2 (
    data jsonb,
    pname text generated always as (data ->> 'name') stored
    -- Here ---------------------------------^----^
);