无法在 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 ---------------------------------^----^
);
我正在尝试使用 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 ---------------------------------^----^
);