Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

【PostgreSQL】データベースのグローバルな設定を変更する

SELECT current_setting('hoge')で取得する値を変更したい。

set_config

set_config(setting_name, new_value, is_local)を実行したが、変更が反映されなかった。set_configによる変更のスコープはセッション単位であるため。

SETでセッション内でローカルに変更できるパラメータの値を変更することができます。対応する関数はset_config(setting_name, new_value, is_local)です。

ALTER DATABASE

ALTER DATABASEを使用すると、変更が永続化される(データベース単位のグローバルな設定値が変更される)。

ALTER DATABASE db_name SET setting_name TO new_value

PostgreSQLは3つのSQLコマンドでデフォルト値を設定します。 すでに説明したALTER SYSTEMコマンドは、SQLによってグローバルな設定値を変更する方法を提供します; postgresql.confを編集するのと等価です。これに加え、データベース単位あるいはロール単位で設定するためのコマンドがあります:

ALTER DATABASEコマンドはデータベース単位でグローバルな設定値を上書きします。

ちなみに、サーバーのデフォルト値を変更する場合は、ALTER SYSTEMまたはpostgresql.confを編集する。

参考

www.postgresql.jp