All streams
Search
Write a publication
Pull to refresh

Comments 6

Спасибо за статью, кратко и полезно.

Не раскрыт вариант с set_config(setting_namenew_valueis_local)

Если параметр is_local равен true, новое значение будет действовать только в рамках текущей транзакции.

https://postgrespro.ru/docs/postgresql/9.6/functions-admin

Это тема для отдельной статьи, так как уровней установки параметров 7 🙂. Например, "будет действовать только в рамках транзакции" не всегда верно, так как SET LOCAL (эквивалент set_config(параметр, значение, true)) перекрывается на уровне функции опцией SET.

В документации это описано на 4 разных страницах. Здесь в одном месте (слайды170,171):

Интересно узнать как использовать set_config именно в виде хранения временных переменных. И статью на эту тему было бы интересно почитать.

П.С. Использовал set_config в следующем кейсе: указание автора изменений перед изменениями в транзакции, триггер на изменения логировал автора изменений.

Этот способ не упоминают и не рекомендуют, потому, что считается, что параметры для хранения временных данных не предназначены; хранить составные типы не удобно, так как хранят только строку; планируют добавить сессионные переменные. Практически для хранения нескольких переменных set_config()/current_setting() можно использовать, как вы и делаете.

Sign up to leave a comment.