У меня есть запрос, который нормально работает
INSERT INTO assignments (id, task_id, item_id, started, completed, result, status, marker_id)
SELECT $1, task_id, item_id, NULL, completed, result, 'QUEUE', NULL
FROM assignments
WHERE assignments.id = $2
RETURNING id;
Он дублирует одно поле в таблице. С некоторыми изменениями.
Теперь мне понадобилось дублировать несколько полей. Я написал что-то вроде этого.
INSERT INTO assignments (id, task_id, item_id, started, completed, result, status, marker_id)
SELECT UNNEST($1::uuid[]), task_id, item_id, NULL, completed, result, 'QUEUE', NULL
FROM assignments
WHERE assignments.id = ANY ($2::uuid[]);
Но это возвращает ошибку
duplicate key value violates unique constraint "assignment_pk"
Хотя я не отправляю дубликаты.
Я предполагаю, что это связано с тем, что между $1 и $2 нет связи.
Из возможных решений я думаю можно сначала взять данные нужных нам записей, а потом заинсертить их, но было бы приятней запросом сделать.