Нет вставки значения в столбец SQL

#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;
  

после этого.