Как собрать INSERT запрос в PLPGSQL в цикле LOOP чтобы он выполнился один раз?

Есть цикл

DO LANGUAGE PLPGSQL $$
DECLARE
rec record;

BEGIN

FOR rec IN SELECT * FROM public.users  
LOOP
INSERT INTO public.user_task(user_id, task_id, meta, status)
    VALUES (rec.id, 15, '{"sender":"pablo","body":"they are on to us"}', 'uncomplete');

END LOOP;
END;
$$

Насколько я понимаю, вставок будет ровно столько, сколько и строк в таблице users

Можно ли как-то собрать этот запрос в один, чтобы была одна вставка?


Ответы (1 шт):

Автор решения: Konst

достаточно выполнить один запрос вместо цикла:

INSERT INTO public.user_task(user_id, task_id, meta, status) select rec.id, 15, '{"sender":"pablo","body":"they are on to us"}', 'uncomplete' from public.users rec; 
→ Ссылка