2015-04-12 38 views
5

我在使用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

+0

輸出這個命令設置選項'set'是一個SQL命令,並且可以從任何SQL客戶端中使用。 '\ set'和'\ pset'只能和'psql'一起使用 –

+2

不幸的是'\ set'沒有被命名爲'\ varset'或者其他東西。 –

回答

8

基本上是正確的。最重要的區別是SET是一個SQL命令,而另外兩個是psql元命令 - 由前綴\指示。

  • SET是一個SQL命令來改變運行時間參數。它在服務器上執行,與psql本身無關。

  • \set是psql元命令,per documentation

    設置PSQL變量名值[...]

    注:該命令是無關的SQL命令SET

  • \pset是另一個psql元命令。 Per documentation

    影響的查詢結果表

相關問題