mirror of
https://github.com/postgres/postgres.git
synced 2025-10-31 10:30:33 +03:00
Commit b8a91d9d1c put the description of the new IF EXISTS clause in the
wrong place -- move it where it belongs.
Backpatch to 9.2.
239 lines
7.2 KiB
Plaintext
239 lines
7.2 KiB
Plaintext
<!--
|
|
doc/src/sgml/ref/alter_index.sgml
|
|
PostgreSQL documentation
|
|
-->
|
|
|
|
<refentry id="SQL-ALTERINDEX">
|
|
<indexterm zone="sql-alterindex">
|
|
<primary>ALTER INDEX</primary>
|
|
</indexterm>
|
|
|
|
<refmeta>
|
|
<refentrytitle>ALTER INDEX</refentrytitle>
|
|
<manvolnum>7</manvolnum>
|
|
<refmiscinfo>SQL - Language Statements</refmiscinfo>
|
|
</refmeta>
|
|
|
|
<refnamediv>
|
|
<refname>ALTER INDEX</refname>
|
|
<refpurpose>change the definition of an index</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsynopsisdiv>
|
|
<synopsis>
|
|
ALTER INDEX [ IF EXISTS ] <replaceable class="PARAMETER">name</replaceable> RENAME TO <replaceable class="PARAMETER">new_name</replaceable>
|
|
ALTER INDEX [ IF EXISTS ] <replaceable class="PARAMETER">name</replaceable> SET TABLESPACE <replaceable class="PARAMETER">tablespace_name</replaceable>
|
|
ALTER INDEX [ IF EXISTS ] <replaceable class="PARAMETER">name</replaceable> SET ( <replaceable class="PARAMETER">storage_parameter</replaceable> = <replaceable class="PARAMETER">value</replaceable> [, ... ] )
|
|
ALTER INDEX [ IF EXISTS ] <replaceable class="PARAMETER">name</replaceable> RESET ( <replaceable class="PARAMETER">storage_parameter</replaceable> [, ... ] )
|
|
ALTER INDEX ALL IN TABLESPACE <replaceable class="PARAMETER">name</replaceable> [ OWNED BY <replaceable class="PARAMETER">role_name</replaceable> [, ... ] ]
|
|
SET TABLESPACE <replaceable class="PARAMETER">new_tablespace</replaceable> [ NOWAIT ]
|
|
</synopsis>
|
|
</refsynopsisdiv>
|
|
|
|
<refsect1>
|
|
<title>Description</title>
|
|
|
|
<para>
|
|
<command>ALTER INDEX</command> changes the definition of an existing index.
|
|
There are several subforms:
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term><literal>RENAME</literal></term>
|
|
<listitem>
|
|
<para>
|
|
The <literal>RENAME</literal> form changes the name of the index.
|
|
There is no effect on the stored data.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>SET TABLESPACE</literal></term>
|
|
<listitem>
|
|
<para>
|
|
This form changes the index's tablespace to the specified tablespace and
|
|
moves the data file(s) associated with the index to the new tablespace.
|
|
To change the tablespace of an index, you must own the index and have
|
|
<literal>CREATE</literal> privilege on the new tablespace.
|
|
All indexes in the current database in a tablespace can be moved by using
|
|
the <literal>ALL IN TABLESPACE</literal> form, which will lock all
|
|
indexes to be moved and then move each one. This form also supports
|
|
<literal>OWNED BY</literal>, which will only move indexes owned by the
|
|
roles specified. If the <literal>NOWAIT</literal> option is specified
|
|
then the command will fail if it is unable to acquire all of the locks
|
|
required immediately. Note that system catalogs will not be moved by
|
|
this command, use <command>ALTER DATABASE</command> or explicit
|
|
<command>ALTER INDEX</command> invocations instead if desired.
|
|
See also
|
|
<xref linkend="SQL-CREATETABLESPACE">.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>SET ( <replaceable class="PARAMETER">storage_parameter</replaceable> = <replaceable class="PARAMETER">value</replaceable> [, ... ] )</literal></term>
|
|
<listitem>
|
|
<para>
|
|
This form changes one or more index-method-specific storage parameters
|
|
for the index. See
|
|
<xref linkend="SQL-CREATEINDEX">
|
|
for details on the available parameters. Note that the index contents
|
|
will not be modified immediately by this command; depending on the
|
|
parameter you might need to rebuild the index with
|
|
<xref linkend="SQL-REINDEX">
|
|
to get the desired effects.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>RESET ( <replaceable class="PARAMETER">storage_parameter</replaceable> [, ... ] )</literal></term>
|
|
<listitem>
|
|
<para>
|
|
This form resets one or more index-method-specific storage parameters to
|
|
their defaults. As with <literal>SET</>, a <literal>REINDEX</literal>
|
|
might be needed to update the index entirely.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Parameters</title>
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term><literal>IF EXISTS</literal></term>
|
|
<listitem>
|
|
<para>
|
|
Do not throw an error if the index does not exist. A notice is issued
|
|
in this case.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><replaceable class="PARAMETER">name</replaceable></term>
|
|
<listitem>
|
|
<para>
|
|
The name (possibly schema-qualified) of an existing index to
|
|
alter.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><replaceable class="PARAMETER">new_name</replaceable></term>
|
|
<listitem>
|
|
<para>
|
|
The new name for the index.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><replaceable class="PARAMETER">tablespace_name</replaceable></term>
|
|
<listitem>
|
|
<para>
|
|
The tablespace to which the index will be moved.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><replaceable class="PARAMETER">storage_parameter</replaceable></term>
|
|
<listitem>
|
|
<para>
|
|
The name of an index-method-specific storage parameter.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><replaceable class="PARAMETER">value</replaceable></term>
|
|
<listitem>
|
|
<para>
|
|
The new value for an index-method-specific storage parameter.
|
|
This might be a number or a word depending on the parameter.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Notes</title>
|
|
|
|
<para>
|
|
These operations are also possible using
|
|
<xref linkend="SQL-ALTERTABLE">.
|
|
<command>ALTER INDEX</> is in fact just an alias for the forms
|
|
of <command>ALTER TABLE</> that apply to indexes.
|
|
</para>
|
|
|
|
<para>
|
|
There was formerly an <command>ALTER INDEX OWNER</> variant, but
|
|
this is now ignored (with a warning). An index cannot have an owner
|
|
different from its table's owner. Changing the table's owner
|
|
automatically changes the index as well.
|
|
</para>
|
|
|
|
<para>
|
|
Changing any part of a system catalog index is not permitted.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Examples</title>
|
|
<para>
|
|
To rename an existing index:
|
|
<programlisting>
|
|
ALTER INDEX distributors RENAME TO suppliers;
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
To move an index to a different tablespace:
|
|
<programlisting>
|
|
ALTER INDEX distributors SET TABLESPACE fasttablespace;
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
To change an index's fill factor (assuming that the index method
|
|
supports it):
|
|
<programlisting>
|
|
ALTER INDEX distributors SET (fillfactor = 75);
|
|
REINDEX INDEX distributors;
|
|
</programlisting></para>
|
|
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Compatibility</title>
|
|
|
|
<para>
|
|
<command>ALTER INDEX</> is a <productname>PostgreSQL</productname>
|
|
extension.
|
|
</para>
|
|
</refsect1>
|
|
|
|
|
|
<refsect1>
|
|
<title>See Also</title>
|
|
|
|
<simplelist type="inline">
|
|
<member><xref linkend="sql-createindex"></member>
|
|
<member><xref linkend="sql-reindex"></member>
|
|
</simplelist>
|
|
</refsect1>
|
|
</refentry>
|