#arrays #postgresql #loops
#массивы #postgresql #циклы
Вопрос:
Я хотел бы вставить данные массива equip
в таблицу с помощью цикла.
var svr = 1;
var equip = [3, 4, 5];
Для этого мне нужно вставить данные три раза.
Выглядит так:
INSERT INTO khnp.link_server_equipment_map(svr, equip)
VALUES (1, 3);
INSERT INTO khnp.link_server_equipment_map(svr, equip)
VALUES (1, 4);
INSERT INTO khnp.link_server_equipment_map(svr, equip)
VALUES (1, 5);
Может кто-нибудь, пожалуйста, вытащить меня из этой кроличьей норы? Спасибо
Ответ №1:
Вы можете попробовать unnest:
INSERT INTO khnp.link_server_equipment_map(svr, equip)
VALUES (1, UNNEST(ARRAY[3, 4, 5]));`
Ответ №2:
Вы можете использовать INSERT
инструкцию для вставки нескольких строк.
INSERT INTO table_name (column_list)
VALUES
(value_list_1),
(value_list_2),
...
(value_list_n);
Согласно вашему упомянутому примеру данных, вставка строк будет выполняться следующим образом
INSERT INTO khnp.link_server_equipment_map(svr, equip) VALUES
(1, 3),
(1, 4),
(1, 5);
Также, чтобы избежать добавления содержимого массива по одному, вы можете использовать UNNEST
функцию array .