postgis -ERROR для "forcece_geotype_the_geom " - PullRequest
1 голос
/ 05 марта 2012

У меня есть одна таблица с именем sta . Я хотел добавить в нее еще один столбец. Я сделал это, используя следующую инструкцию:

SELECT AddGeometryColumn ('public','station','the_geom',4326,'POINT',2);

the_geom добавлен столбец со следующими ограничениями:

CONSTRAINT enforce_dims_the_geom CHECK (st_ndims(the_geom) = 2),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 4326)

Я хотел вставить значения в столбец the_geom . Я попытался:

update station set the_geom = ST_GeomFromEWKT('SRID=4326;POINT(65.6471666666667  25.0368333333333)');

Но я получаю ошибку:

ERROR:  new row for relation "station" violates check constraint "enforce_geotype_the_geom"

Что означает это ограничение? Как вставить значения в одно и то же значение?

Ответы [ 2 ]

1 голос
/ 25 февраля 2013

Вам не нужно ограничение для проверки размеров, геотипа и его SRID. Типмод postgis / postgres уже сделает это за вас.

Функция AddGeometryColumn заставляет использовать typmod (поскольку аргумент use_typmod по умолчанию true, как вы можете видеть в документации addgeometrycolumn .

И я рекомендую использовать оператор ALTER TABLE для добавления столбца геометрии в таблицу

ALTER TABLE station ADD COLUMN the_geom geometry(Point,4326);

И вам не нужно заботиться о проверках (SRID, тип геометрии).

0 голосов
/ 27 декабря 2013

Не уверен, почему st_geom_fromewkt не работает, но вы можете попробовать что-то другое, например: обновить станцию ​​set the_geom = st_setSRID (st_point (65.6471666666667,25.0368333333333), 4326);Это может быть лучшей гарантией типа Point.

...