ALTER DATABASE — データベースを変更する
ALTER DATABASEname
[ [ WITH ]option
[ ... ] ] ここでoption
は以下の通りです。 ALLOW_CONNECTIONSallowconn
CONNECTION LIMITconnlimit
IS_TEMPLATEistemplate
ALTER DATABASEname
RENAME TOnew_name
ALTER DATABASEname
OWNER TO {new_owner
| CURRENT_USER | SESSION_USER } ALTER DATABASEname
SET TABLESPACEnew_tablespace
ALTER DATABASEname
SETconfiguration_parameter
{ TO | = } {value
| DEFAULT } ALTER DATABASEname
SETconfiguration_parameter
FROM CURRENT ALTER DATABASEname
RESETconfiguration_parameter
ALTER DATABASEname
RESET ALL
ALTER DATABASE
はデータベースの属性を変更します。
最初の構文はデータベース毎の設定を変更します。 (詳細は後述します。) データベース所有者とスーパーユーザのみがこの設定を変更することができます。
2番目の構文は、データベースの名前を変更します。
データベースの名前を変更できるのは、データベースの所有者またはスーパーユーザのみです。
ただし、スーパーユーザではない所有者はCREATEDB
権限を所有していなければなりません。
現在のデータベースの名前を変更することはできません(必要ならば、別のデータベースに接続してください)。
3番目の構文は、データベースの所有者を変更します。
所有者を変更するにはデータベースを所有し、かつ、新しい所有者ロールの間接的あるいは直接的なメンバでなければなりません。
さらに、CREATEDB
権限も持たなければなりません。
(スーパーユーザはこれらの権限を自動的に持っていることに注意してください。)
4番目の構文は、データベースのデフォルトのテーブル空間を変更します。 データベースの所有者またはスーパーユーザのみがこれを行うことができます。 また、新しいテーブル空間における作成権限を持つ必要があります。 このコマンドはデータベースの古いデフォルトのテーブル空間にあるテーブルまたはインデックスを新しいテーブル空間に物理的にすべて移動します。 新しいデフォルトのテーブル空間は、このデータベースについては空でなければならず、誰もデータベースに接続されていてはなりません。 デフォルト以外のテーブル空間にあるテーブルまたはインデックスには影響がありません。
残りの構文は、PostgreSQLデータベースにおける実行時設定変数のセッションのデフォルト値を変更します。
コマンド実行後にデータベースで開始される新規セッションにおいて、指定された値がデフォルト値になります。
データベース固有のデフォルト値は、postgresql.conf
ファイルに記述されている設定やpostgres
コマンドラインから受け取った設定よりも優先します。
データベースにおけるセッションのデフォルト値を変更できるのは、データベースの所有者またはスーパーユーザのみです。
この方法では設定できない変数や、スーパーユーザのみが設定できる変数も存在します。
name
属性変更の対象となるデータベースの名前です。
allowconn
falseの場合、このデータベースには誰も接続できません。
connlimit
データベースへの最大同時接続数です。 -1は無制限を意味します。
istemplate
trueの場合、CREATEDB
権限のあるユーザは誰でも、このデータベースを複製できます。
falseの場合、スーパーユーザー、あるいはデータベースの所有者のみが、このデータベースを複製できます。
new_name
新しいデータベース名です。
new_owner
新しいデータベースの所有者です。
new_tablespace
新しいデータベースのデフォルトのテーブル空間です。
この構文のコマンドはトランザクションブロックの内側で実行することはできません。
configuration_parameter
value
指定した設定パラメータについて、データベースのセッションのデフォルト値を指定した値に設定します。
value
がDEFAULT
の場合、あるいは等価なRESET
が使用されている場合、データベース固有の設定は無効になり、新しいセッションではシステム全体のデフォルト設定が継承されます。
全てのデータベース固有の設定をクリアするには、RESET ALL
を使用してください。
SET FROM CURRENT
は、データベース固有の値としてセッションにおけるパラメータの現在値を保管します。
データベースではなく特定のロールにセッションのデフォルト値を関連付けることもできます。 ALTER ROLEを参照してください。 設定が競合する場合には、ロール固有の設定が、データベース固有の設定を上書きします。
データベースtest
内のインデックススキャンをデフォルトで無効にします。
ALTER DATABASE test SET enable_indexscan TO off;
ALTER DATABASE
文はPostgreSQLの拡張です。