#database #postgresql #insert
#База данных #postgresql #вставить
Вопрос:
У меня есть несколько полигонов в таблице, и я хочу преобразовать их в область и добавить результат в строку.
INSERT INTO citydb.surfaces(foot_p)
SELECT st_area(geom)
FROM citydb.surfaces
WHERE class_id = 33;
Он возвращает это:
INSERT 0 110521
Query returned successfully in 677 msec.
Но столбец пуст.
Комментарии:
1. Тогда, вероятно
geom
, было NULL для всех этих строк. Некоторые примеры данных для воспроизведения проблемы помогли бы.2. geom не был нулевым, потому что, когда я запускаю код без вставки В окно вывода данных, отображается результат
Ответ №1:
Кажется, что вы хотите заполнить новый столбец для существующих строк таблицы, но то, что вы делаете, это добавляете новые строки, в которых все столбцы, кроме foot_p
(и столбцы со DEFAULT
значением), будут равны NULL .
Вы, вероятно, имеете в виду сделать
UPDATE citydb.surfaces
SET foot_p = st_area(geom);
Это изменит существующие строки.
Это обновление значительно увеличит вашу таблицу, поэтому подумайте о запуске
VACUUM (FULL) citydb.surfaces;
после этого.