★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

ALTER DATABASE

ALTER DATABASE — データベースを変更する

概要

ALTER DATABASE name [ [ WITH ] option [ ... ] ]


ここでoptionは以下の通りです。

    ALLOW_CONNECTIONS allowconn
    CONNECTION LIMIT connlimit
    IS_TEMPLATE istemplate

ALTER DATABASE name RENAME TO new_name

ALTER DATABASE name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }

ALTER DATABASE name SET TABLESPACE new_tablespace

ALTER DATABASE name REFRESH COLLATION VERSION

ALTER DATABASE name SET configuration_parameter { TO | = } { value | DEFAULT }
ALTER DATABASE name SET configuration_parameter FROM CURRENT
ALTER DATABASE name RESET configuration_parameter
ALTER DATABASE name RESET ALL

説明

ALTER DATABASEはデータベースの属性を変更します。

最初の構文はデータベース毎の設定を変更します。 (詳細は後述します。) データベース所有者とスーパーユーザのみがこの設定を変更できます。

2番目の構文は、データベースの名前を変更します。 データベースの名前を変更できるのは、データベースの所有者またはスーパーユーザのみです。 ただし、スーパーユーザではない所有者はCREATEDB権限を所有していなければなりません。 現在のデータベースの名前を変更することはできません(必要ならば、別のデータベースに接続してください)。

3番目の構文は、データベースの所有者を変更します。 所有者を変更するには、新しい所有者ロールに対してSET ROLEができなければなりません。さらに、CREATEDB権限も持たなければなりません。 (スーパーユーザはこれらの権限を自動的に持っていることに注意してください。)

4番目の構文は、データベースのデフォルトのテーブル空間を変更します。 データベースの所有者またはスーパーユーザのみがこれを行うことができます。 また、新しいテーブル空間における作成権限を持つ必要があります。 このコマンドはデータベースの古いデフォルトのテーブル空間にあるテーブルまたはインデックスを新しいテーブル空間に物理的にすべて移動します。 新しいデフォルトのテーブル空間は、このデータベースについては空でなければならず、誰もデータベースに接続されていてはなりません。 デフォルト以外のテーブル空間にあるテーブルまたはインデックスには影響がありません。

残りの構文は、PostgreSQLデータベースにおける実行時設定変数のセッションのデフォルト値を変更します。 コマンド実行後にデータベースで開始される新規セッションにおいて、指定された値がデフォルト値になります。 データベース固有のデフォルト値は、postgresql.confファイルに記述されている設定やpostgresコマンドラインから受け取った設定よりも優先します。 データベースにおけるセッションのデフォルト値を変更できるのは、データベースの所有者またはスーパーユーザのみです。 この方法では設定できない変数や、スーパーユーザのみが設定できる変数も存在します。

パラメータ

name

属性変更の対象となるデータベースの名前です。

allowconn

falseの場合、このデータベースには誰も接続できません。

connlimit

データベースへの最大同時接続数です。 -1は無制限を意味します。

istemplate

trueの場合、CREATEDB権限のあるユーザは誰でも、このデータベースを複製できます。 falseの場合、スーパーユーザー、あるいはデータベースの所有者のみが、このデータベースを複製できます。

new_name

新しいデータベース名です。

new_owner

新しいデータベースの所有者です。

new_tablespace

新しいデータベースのデフォルトのテーブル空間です。

この構文のコマンドはトランザクションブロックの内側で実行することはできません。

REFRESH COLLATION VERSION

データベースの照合順序のバージョンを更新します。 背景については注釈を参照してください。

configuration_parameter
value

指定した設定パラメータについて、データベースのセッションのデフォルト値を指定した値に設定します。 valueDEFAULTの場合、あるいは等価なRESETが使用されている場合、データベース固有の設定は無効になり、新しいセッションではシステム全体のデフォルト設定が継承されます。 全てのデータベース固有の設定をクリアするには、RESET ALLを使用してください。 SET FROM CURRENTは、データベース固有の値としてセッションにおけるパラメータの現在値を保管します。

設定可能なパラメータ名とその値に関する詳細についてはSETおよび第20章を参照してください。

注釈

データベースではなく特定のロールにセッションのデフォルト値を関連付けることもできます。 ALTER ROLEを参照してください。 設定が競合する場合には、ロール固有の設定が、データベース固有の設定を上書きします。

データベースtest内のインデックススキャンをデフォルトで無効にします。

ALTER DATABASE test SET enable_indexscan TO off;

互換性

ALTER DATABASE文はPostgreSQLの拡張です。

関連項目

CREATE DATABASE, DROP DATABASE, SET, CREATE TABLESPACE