Этот SO-ответ прекрасно объясняет (полная цитата из araqnid между горизонтальными правилами, затем снова я):
Чтобы пометить «applogs» базы данных как не принимающие новые подключения:
update pg_database set datallowconn = false where datname = 'applogs';
Другой возможностью будет аннулирование доступа «connect» к базе данных для роли (ей) клиента.
Отключить пользователей от базы данных = убить бэкэнд. Таким образом, чтобы отключить всех других пользователей от базы данных «applogs», например:
select pg_terminate_backend(procpid)
from pg_stat_activity
where datname = 'applogs' and procpid <> pg_backend_pid();
После того, как вы выполнили оба этих действия, вы единственный пользователь, подключенный к 'applogs'. Хотя на самом деле может быть задержка, прежде чем бэкэнды действительно завершат отключение?
Обновление от MarkJL : действительно, перед завершением отсоединения бэкэндов действительно есть задержка.
Теперь я снова: сказанное, учтите, что столбец procpid
был переименован в pid
в PostgreSQL 9.2 и более поздних версиях.
Я думаю, что это гораздо более полезно, чем ответ Милена А. Радева, который, хотя технически не совпадает с примерами использования и реальными предложениями.