Postgresql изменить таблицу -> добавить столбец + значения

Мне нужно изменить таблицу в моей БД. Я хочу добавить столбец с типом integer[] и добавить значения в этот столбец непосредственно из другого запроса, результатом которого будет 4 идентификационных номера.

Что я получил на данный момент:

ALTER TABLE resourcen add rs_insurance integer[] 
update resourcen set rs_insurance = (select li_id from li_versicherungsart) 

Вторая команда возвращает следующую ошибку:

ERROR: column "rs_insurance" is of type integer[] but expression is of type integer
SQL state: 42804
Hint: You will need to rewrite or cast the expression.
Character: 37

Как я могу преобразовать все найденные идентификаторы в массив int[]?


person Jacob    schedule 23.11.2016    source источник
comment
select array_agg(li_id) ..., но вам определенно нужен какой-то сопутствующий подзапрос. Но трудно сказать без более подробной информации об этих двух таблицах и о том, как они соотносятся друг с другом.   -  person a_horse_with_no_name    schedule 23.11.2016
comment
Это сработало! Опубликовал это как ответ, поэтому я могу принять его!   -  person Jacob    schedule 23.11.2016
comment
Да, это именно то, что я хочу. Но li_versicherungsart отличается на разных установках.   -  person Jacob    schedule 23.11.2016
comment
Потому что значения могут быть изменены позже пользователем.   -  person Jacob    schedule 23.11.2016


Ответы (1)


Вы можете использовать функцию агрегации массива postgres:

update resourcen set rs_insurance = (select array_agg(li_id) from li_versicherungsart) 

Ссылка: https://www.postgresql.org/docs/current/static/functions-aggregate.html

person SaiNageswar S    schedule 23.11.2016