#postgresql #plpgsql
Вопрос:
SELECT pg_cancel_backend(SELECT pid
FROM pg_stat_activity
WHERE state not like 'idle%'
AND query NOT ILIKE '%pg_stat_activity%'
AND age(clock_timestamp(), query_start) > interval '600 minutes');
Код не работает
SQL Error [42601]: ERROR: syntax error at or near "SELECT"
Position: 26
Я просто хочу остановить некоторые внутренние процессы, которые застряли, и сделать это программно. У меня это есть в процедуре PLPGSQL.
Комментарии:
1. Заключите внутренний ВЫБОР внутрь
()
.
Ответ №1:
Вам не нужен внешний выбор:
SELECT pg_cancel_backend(pid)
FROM pg_stat_activity
WHERE state not like 'idle%'
AND query NOT ILIKE '%pg_stat_activity%'
AND age(clock_timestamp(), query_start) > interval '600 minutes';
Обратите внимание, что в процедуре PL/pgSQL вам нужно будет использовать perform
вместо SELECT. Подробности см. в руководстве