}説明SETコマンドは実行時設定パラメータを変更します。(ただし、変更するためにスーパーユーザ権限が必要なものがあります。サーバあるいはセッションの始動後は変更できないパラメータもあります)。SETは現行セッションで使用される値にのみ影響することに注意してください。SESSIONも同じ)が発行された後にトランザクションがアボートされると、トランザクションがロールバックした時点でSETコマンドの効力は失われます。一度トランザクションがコミットされると、別のSETコマンドで上書きされない限り、セッションが終了するまでその効果が持続します。LOCALの効果は、コミットのされたかどうかにかかわらず現在のトランザクションが終了するまでしか持続しません。LOCALが続く特殊な例を考えてみましょう。LOCAL値が有効ですが、その後(トランザクションがコミットされたとして)SET値が有効になります。LOCALの効果は、このコマンドより以前のセーブポイントまでロールバックした場合は取り消されます。LOCALコマンドの効果は関数終了時に消滅します。関数が呼び出された時に有効だった値にとにかく戻されます。LOCALは、呼び出し元の値を保管し元に戻すというSETオプションを使用する利点を持ちつつ、関数内で動的または繰り返し変更されるパラメータ用に使用できます。通常のSETコマンドでは上位の関数のSETオプションを上書きしてしまい、その効果はロールバックしない限り永続します。LOCALの効果は、より以前のセーブポイントを解放すること、または、PL/pgSQL例外ブロックから正常終了することで取り消されました。直観的ではないようですので、この動作は変更されました。(SESSIONもLOCALも指定されていない場合は、これがデフォルトです)。LOCALコマンドの有効範囲が現行のトランザクションのみであることを指定します。COMMITまたはROLLBACKの後は、再びセッションレベルの設定が有効になります。これをトランザクションブロックの外側で実行すると、警告が発生しますが、それ以外には何の効果もありません。configuration_parameter設定可能な実行時パラメータ名です。利用可能なパラメータは、18章サーバの設定と以下に示します。valueパラメータの新しい値です。これらをカンマで区切ったリストを対象のパラメータで適切となるように、指定することができます。DEFAULTと記述することで、パラメータをデフォルト値(つまり、現在のセッションでSETが実行されなかった時に設定される値)に再設定することができます。18章サーバの設定に記載された設定パラメータの他に、SETコマンドを使用してのみ調整できるパラメータや特殊な構文を持つパラメータがいくつかあります。valueの別名です。この構文を使用する場合は1つのスキーマのみを指定することができます。valueの別名です。SEED乱数ジェネレータ(random関数)用の内部シードを設定します。-1から1までの浮動小数点数を値として設定できます。その後、この値には231-1がかけられます。シードはsetseed関数を呼び出すことでも設定可能です。valueの別名です。ZONE構文では、時間帯の指定に特殊な構文を使用できます。有効な値の例を以下に示します。'PST8PDT'カリフォルニア州バークレイ用の時間帯です。'Europe/Rome'イタリア用の時間帯です。-7UTCから西に7時間分ずらした時間帯です(PDTと同じです)。正の値はUTCから東方向です。MINUTEUTCから西に8時間分ずらした時間帯です(PSTと同じです)。LOCALDEFAULT時間帯をユーザのローカルな時間帯(サーバのデフォルトのtimezone値)に設定します。時間帯を数字あるいは時間で指定した時は、内部的にPOSIXの時間帯構文として解釈されます。ZONEを実行すると、その結果は<-07>+07となります。時間帯を参照してください。注釈set_config関数は等価な機能を提供します。システム管理関数を参照してください。pg_settingsシステムビューを更新することで、SETと同じことを実行することができます。例スキーマの検索パスを設定します。month(月の前に日)」を使います。dmy;時間帯をカリフォルニア州バークレイに設定します。'PST8PDT';時間帯をイタリアに設定します。ZONEは標準SQLで定義された構文を拡張したものです。標準では数値による時間帯オフセットしか使用できないのに対し、PostgreSQLでは、より柔軟に時間帯を指定することができます。SETが持つその他の機能は、全てPostgreSQLの拡張です。CONSTRAINTS。