我正在将一个曾经由触发器更新的表重新创建为新生成的列类型。
我遇到了一个问题,如果生成的列可以NULL
,它们会默默地失败并插入为NULL
. 如果列是NOT NULL
插入失败,则为NOT NULL constraint
.
两种情况都失败并且不会生成预期的单元格值。
create table test_table
(
coord_array double precision[] not null,
wkb_geometry geometry generated always as (st_setsrid(st_point(coord_array[0], coord_array[1]), 4326)) stored not null,
wkt_geometry text generated always as (st_astext(st_setsrid(st_point(coord_array[0], coord_array[1]), 4326))) stored not null,
geojson_coord_string jsonb generated always as ((st_asgeojson(st_setsrid(st_point(coord_array[0], coord_array[1]), 4326)))::jsonb) stored not null
);
理想情况下,插入应该只发生在值为coord_array
insert into test_table (coord_array) values ('{25.0 ,-26.0}')