mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-31 16:47:48 +02:00
127 lines
3.3 KiB
Plaintext
127 lines
3.3 KiB
Plaintext
<!--
|
|
$PostgreSQL: pgsql/doc/src/sgml/ref/truncate.sgml,v 1.21 2006/09/16 00:30:20 momjian Exp $
|
|
PostgreSQL documentation
|
|
-->
|
|
|
|
<refentry id="SQL-TRUNCATE">
|
|
<refmeta>
|
|
<refentrytitle id="SQL-TRUNCATE-TITLE">TRUNCATE</refentrytitle>
|
|
<refmiscinfo>SQL - Language Statements</refmiscinfo>
|
|
</refmeta>
|
|
|
|
<refnamediv>
|
|
<refname>TRUNCATE</refname>
|
|
<refpurpose>empty a table or set of tables</refpurpose>
|
|
</refnamediv>
|
|
|
|
<indexterm zone="sql-truncate">
|
|
<primary>TRUNCATE</primary>
|
|
</indexterm>
|
|
|
|
<refsynopsisdiv>
|
|
<synopsis>
|
|
TRUNCATE [ TABLE ] <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCADE | RESTRICT ]
|
|
</synopsis>
|
|
</refsynopsisdiv>
|
|
|
|
<refsect1>
|
|
<title>Description</title>
|
|
|
|
<para>
|
|
<command>TRUNCATE</command> quickly removes all rows from a set of
|
|
tables. It has the same effect as an unqualified
|
|
<command>DELETE</command> on each table, but since it does not actually
|
|
scan the tables it is faster. This is most useful on large tables.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Parameters</title>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><replaceable class="PARAMETER">name</replaceable></term>
|
|
<listitem>
|
|
<para>
|
|
The name (optionally schema-qualified) of a table to be truncated.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>CASCADE</literal></term>
|
|
<listitem>
|
|
<para>
|
|
Automatically truncate all tables that have foreign-key references
|
|
to any of the named tables, or to any tables added to the group
|
|
due to <literal>CASCADE</literal>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>RESTRICT</literal></term>
|
|
<listitem>
|
|
<para>
|
|
Refuse to truncate if any of the tables have foreign-key references
|
|
from tables that are not to be truncated. This is the default.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Notes</title>
|
|
|
|
<para>
|
|
Only the owner of a table may <command>TRUNCATE</> it.
|
|
</para>
|
|
|
|
<para>
|
|
<command>TRUNCATE</> cannot be used on a table that has foreign-key
|
|
references from other tables, unless all such tables are also truncated
|
|
in the same command. Checking validity in such cases would require table
|
|
scans, and the whole point is not to do one. The <literal>CASCADE</>
|
|
option can be used to automatically include all dependent tables —
|
|
but be very careful when using this option, else you might lose data you
|
|
did not intend to!
|
|
</para>
|
|
|
|
<para>
|
|
<command>TRUNCATE</> will not run any user-defined <literal>ON
|
|
DELETE</literal> triggers that might exist for the tables.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Examples</title>
|
|
|
|
<para>
|
|
Truncate the tables <literal>bigtable</literal> and <literal>fattable</literal>:
|
|
|
|
<programlisting>
|
|
TRUNCATE TABLE bigtable, fattable;
|
|
</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
Truncate the table <literal>othertable</literal>, and cascade to any tables
|
|
that are referencing <literal>othertable</literal> via foreign-key
|
|
constraints:
|
|
|
|
<programlisting>
|
|
TRUNCATE othertable CASCADE;
|
|
</programlisting>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Compatibility</title>
|
|
|
|
<para>
|
|
There is no <command>TRUNCATE</command> command in the SQL standard.
|
|
</para>
|
|
</refsect1>
|
|
</refentry>
|