запрос?
SET statement_timeout TO '10s';
А он разве отменится после исполнения одной команды? Вроде же он будет иметь эффект на все последующие запросы которые сервер получит от клиента?
тогда заверните запрос в транзакцию и сделайте SET LOCAL …
Так а я уже внутри большой транзакции. И если я хочу, чтобы если один из следующих update-ов грохнется, откатить всё, мне нужно будет дополнительно париться с savepoint-ами?
Если нужно откатить всю транзакцию, то (т.к. timeout — это ошибка), если не было SAVEPOINTs (exceptions в pl/что-нибудь), то она откатится целиком.
способа только для одно запроса — нет. - можно сделать SET LOCAL + запрос + RESET сразу после него. но тут нюанс: если в начале транзакции ставили что-то нестандартное, то RESET сбросит до уровня перед транзакцией — надо тестировать - можно сделать ф-цию с параметром SET statement_timeout = … и давать ей на вход текст запроса, она его исполнит — надо тестировать
Почему? Если управлять этим из приложения, то перед нужным запросом сделать SET, а после — RESET, и всё.
я так понял, что этот вариант не рассматривается…
Обсуждают сегодня