]> granicus.if.org Git - postgresql/blobdiff - doc/src/sgml/ref/alter_database.sgml
Allow CREATE/ALTER DATABASE to manipulate datistemplate and datallowconn.
[postgresql] / doc / src / sgml / ref / alter_database.sgml
index 12447d6b0a754740ca5b8769f464da1608165564..3724c05e2c0cfd6c1128094d9545747f8a75970c 100644 (file)
@@ -1,11 +1,16 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/alter_database.sgml,v 1.7 2003/06/27 14:45:25 petere Exp $
+doc/src/sgml/ref/alter_database.sgml
 PostgreSQL documentation
 -->
 
 <refentry id="SQL-ALTERDATABASE">
+ <indexterm zone="sql-alterdatabase">
+  <primary>ALTER DATABASE</primary>
+ </indexterm>
+
  <refmeta>
-  <refentrytitle id="sql-alterdatabase-title">ALTER DATABASE</refentrytitle>
+  <refentrytitle>ALTER DATABASE</refentrytitle>
+  <manvolnum>7</manvolnum>
   <refmiscinfo>SQL - Language Statements</refmiscinfo>
  </refmeta>
 
@@ -16,10 +21,24 @@ PostgreSQL documentation
 
  <refsynopsisdiv>
 <synopsis>
-ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> SET <replaceable>variable</replaceable> { TO | = } { <replaceable>value</replaceable> | DEFAULT }
-ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> RESET <replaceable>variable</replaceable>
+ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> [ [ WITH ] <replaceable class="PARAMETER">option</replaceable> [ ... ] ]
+
+<phrase>where <replaceable class="PARAMETER">option</replaceable> can be:</phrase>
+
+    IS_TEMPLATE <replaceable class="PARAMETER">istemplate</replaceable>
+    ALLOW_CONNECTIONS <replaceable class="PARAMETER">allowconn</replaceable>
+    CONNECTION LIMIT <replaceable class="PARAMETER">connlimit</replaceable>
+
+ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> RENAME TO <replaceable>new_name</replaceable>
+
+ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> OWNER TO <replaceable>new_owner</replaceable>
 
-ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> RENAME TO <replaceable>newname</replaceable>
+ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> SET TABLESPACE <replaceable class="PARAMETER">new_tablespace</replaceable>
+
+ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> SET <replaceable>configuration_parameter</replaceable> { TO | = } { <replaceable>value</replaceable> | DEFAULT }
+ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> SET <replaceable>configuration_parameter</replaceable> FROM CURRENT
+ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> RESET <replaceable>configuration_parameter</replaceable>
+ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> RESET ALL
 </synopsis>
  </refsynopsisdiv>
 
@@ -27,29 +46,53 @@ ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> RENAME TO <repl
   <title>Description</title>
 
   <para>
-   <command>ALTER DATABASE</command> is used to change the attributes
+   <command>ALTER DATABASE</command> changes the attributes
    of a database.
   </para>
 
   <para>
-   The first two forms change the session default of a run-time
-   configuration variable for a <productname>PostgreSQL</productname>
-   database. Whenever a new session is subsequently started in that
-   database, the specified value becomes the session default value.
-   The database-specific default overrides whatever setting is present
-   in <filename>postgresql.conf</> or has been received from the
-   <command>postmaster</command> command line.  Only the database
-   owner or a superuser can change the session defaults for a
-   database.
+   The first form changes certain per-database settings.  (See below for
+   details.)  Only the database owner or a superuser can change these settings.
   </para>
 
   <para>
-   The third form changes the name of the database.  Only the database
-   owner can rename a database, and only if he has the
+   The second form changes the name of the database.  Only the database
+   owner or a superuser can rename a database; non-superuser owners must
+   also have the
    <literal>CREATEDB</literal> privilege.  The current database cannot
    be renamed.  (Connect to a different database if you need to do
    that.)
   </para>
+
+  <para>
+   The third form changes the owner of the database.
+   To alter the owner, you must own the database and also be a direct or
+   indirect member of the new owning role, and you must have the
+   <literal>CREATEDB</literal> privilege.
+   (Note that superusers have all these privileges automatically.)
+  </para>
+
+  <para>
+   The fourth form changes the default tablespace of the database.
+   Only the database owner or a superuser can do this; you must also have
+   create privilege for the new tablespace.
+   This command physically moves any tables or indexes in the database's old
+   default tablespace to the new tablespace.  Note that tables and indexes
+   in non-default tablespaces are not affected.
+  </para>
+
+  <para>
+   The remaining forms change the session default for a run-time
+   configuration variable for a <productname>PostgreSQL</productname>
+   database. Whenever a new session is subsequently started in that
+   database, the specified value becomes the session default value.
+   The database-specific default overrides whatever setting is present
+   in <filename>postgresql.conf</> or has been received from the
+   <command>postgres</command> command line.  Only the database
+   owner or a superuser can change the session defaults for a
+   database.  Certain variables cannot be set this way, or can only be
+   set by a superuser.
+  </para>
  </refsect1>
 
  <refsect1>
@@ -60,77 +103,102 @@ ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> RENAME TO <repl
       <term><replaceable class="PARAMETER">name</replaceable></term>
       <listitem>
        <para>
-       The name of the database whose session defaults are to be altered.
+        The name of the database whose attributes are to be altered.
        </para>
       </listitem>
      </varlistentry>
 
      <varlistentry>
-      <term><replaceable>variable</replaceable></term>
-      <term><replaceable>value</replaceable></term>
+       <term><replaceable class="parameter">istemplate</replaceable></term>
+       <listitem>
+        <para>
+         If true, then this database can be cloned by any user with CREATEDB
+         privileges; if false, then only superusers or the owner of the
+         database can clone it.
+        </para>
+       </listitem>
+      </varlistentry>
+      <varlistentry>
+       <term><replaceable class="parameter">allowconn</replaceable></term>
+       <listitem>
+        <para>
+         If false then no one can connect to this database.
+        </para>
+       </listitem>
+      </varlistentry>
+      <varlistentry>
+      <term><replaceable class="parameter">connlimit</replaceable></term>
       <listitem>
        <para>
-        Set the session default for this database of the specified
-        configuration variable to the given value.  If
-        <replaceable>value</replaceable> is <literal>DEFAULT</literal>
-        or, equivalently, <literal>RESET</literal> is used, the
-        database-specific variable setting is removed and the system-wide
-       default
-        setting will be inherited in new sessions.  Use <literal>RESET
-        ALL</literal> to clear all settings.
-       </para>
-
-       <para>
-        See <xref linkend="sql-set" endterm="sql-set-title"> and <xref linkend="runtime-config">
-        for more information about allowed variable names
-        and values.
+        How many concurrent connections can be made
+        to this database.  -1 means no limit.
        </para>
       </listitem>
      </varlistentry>
 
    <varlistentry>
-    <term><replaceable>newname</replaceable></term>
+    <term><replaceable>new_name</replaceable></term>
     <listitem>
      <para>
       The new name of the database.
      </para>
     </listitem>
    </varlistentry>
-  </variablelist>
- </refsect1>
 
- <refsect1>
-  <title>Diagnostics</title>
-
-   <variablelist>
-    <varlistentry>
-     <term><computeroutput>ALTER DATABASE</computeroutput></term>
-     <listitem>
-      <para>
-       Message returned if the alteration was successful.
-      </para>
-     </listitem>
-    </varlistentry>
-     
-    <varlistentry>
-     <term><computeroutput>ERROR:  database "dbname" does not exist</computeroutput></term>
-     <listitem>
-      <para>
-       Error message returned if the specified database is not known
-       to the system.
-      </para>
-     </listitem>
-    </varlistentry>
-   </variablelist>
+   <varlistentry>
+    <term><replaceable class="parameter">new_owner</replaceable></term>
+    <listitem>
+     <para>
+      The new owner of the database.
+     </para>
+    </listitem>
+   </varlistentry>
+
+   <varlistentry>
+    <term><replaceable class="parameter">new_tablespace</replaceable></term>
+    <listitem>
+     <para>
+      The new default tablespace of the database.
+     </para>
+    </listitem>
+   </varlistentry>
+
+     <varlistentry>
+      <term><replaceable>configuration_parameter</replaceable></term>
+      <term><replaceable>value</replaceable></term>
+      <listitem>
+       <para>
+        Set this database's session default for the specified configuration
+        parameter to the given value.  If
+        <replaceable>value</replaceable> is <literal>DEFAULT</literal>
+        or, equivalently, <literal>RESET</literal> is used, the
+        database-specific setting is removed, so the system-wide default
+        setting will be inherited in new sessions.  Use <literal>RESET
+        ALL</literal> to clear all database-specific settings.
+        <literal>SET FROM CURRENT</> saves the session's current value of
+        the parameter as the database-specific value.
+       </para>
+
+       <para>
+        See <xref linkend="sql-set"> and <xref linkend="runtime-config">
+        for more information about allowed parameter names
+        and values.
+       </para>
+      </listitem>
+     </varlistentry>
+  </variablelist>
  </refsect1>
 
  <refsect1>
   <title>Notes</title>
 
   <para>
-   Using <xref linkend="sql-alteruser" endterm="sql-alteruser-title">,
-   it is also possible to tie a session default to a specific user
-   rather than a database.  User-specific settings override database-specific
+   It is also possible to tie a session default to a specific role
+   rather than to a database; see
+   <xref linkend="sql-alterrole">.
+   Role-specific settings override database-specific
    ones if there is a conflict.
   </para>
  </refsect1>
@@ -144,13 +212,12 @@ ALTER DATABASE <replaceable class="PARAMETER">name</replaceable> RENAME TO <repl
 
 <programlisting>
 ALTER DATABASE test SET enable_indexscan TO off;
-</programlisting>
-  </para>
+</programlisting></para>
  </refsect1>
 
  <refsect1>
   <title>Compatibility</title>
-    
+
   <para>
    The <command>ALTER DATABASE</command> statement is a
    <productname>PostgreSQL</productname> extension.
@@ -161,27 +228,10 @@ ALTER DATABASE test SET enable_indexscan TO off;
   <title>See Also</title>
 
   <simplelist type="inline">
-   <member><xref linkend="sql-alteruser" endterm="sql-alteruser-title"></member>
-   <member><xref linkend="sql-createdatabase" endterm="sql-createdatabase-title"></member>
-   <member><xref linkend="sql-dropdatabase" endterm="sql-dropdatabase-title"></member>
-   <member><xref linkend="sql-set" endterm="sql-set-title"></member>
+   <member><xref linkend="sql-createdatabase"></member>
+   <member><xref linkend="sql-dropdatabase"></member>
+   <member><xref linkend="sql-set"></member>
+   <member><xref linkend="sql-createtablespace"></member>
   </simplelist>
  </refsect1>
 </refentry>
-
-<!-- Keep this comment at the end of the file
-Local variables:
-mode: sgml
-sgml-omittag:nil
-sgml-shorttag:t
-sgml-minimize-attributes:nil
-sgml-always-quote-attributes:t
-sgml-indent-step:1
-sgml-indent-data:t
-sgml-parent-document:nil
-sgml-default-dtd-file:"../reference.ced"
-sgml-exposed-tags:nil
-sgml-local-catalogs:"/usr/lib/sgml/catalog"
-sgml-local-ecat-files:nil
-End:
--->