Разница между set, set и pset в psql

я немного путаюсь несколько раз при работе с psql между тем, когда использовать set и set и pset. Я думаю, что:

  • set для переменных сеанса при моем подключении к БД. Например SET ROLE dba;
  • set для локальных переменных для этого сеанса psql. Например set time 'select current_timestamp'
  • pset для настроек psql для этого сеанса psql. Например 'pset border 2'

но, я никогда не нашел то, что считал хорошим объяснением каждого. Верны ли мои предположения?

я использую PostgreSQL 9.4

1 ответов


в принципе правильно. Важным отличием является то, что SET - Это команда SQL, а две другие-мета-команды psql, обозначенные префиксом \.

  • SET - это команда SQL для изменения параметров запуска. Он выполняется на сервере и не имеет ничего общего с psql в таковой.

  • \set - это psql в мета-команды и, в документации:

    устанавливает имя переменной psql для значения [...]

    Примечание: эта команда не связана с командой SQL SET.

  • \pset - еще одна мета-команда psql. в документации:

    эта команда устанавливает параметры, влияющие на вывод таблицы результатов запроса