Provided by: postgresql-client-8.3_8.3.4-2.2_i386 bug

NAME

       TRUNCATE - empty a table or set of tables

SYNOPSIS

       TRUNCATE [ TABLE ] name [, ...] [ CASCADE | RESTRICT ]

DESCRIPTION

       TRUNCATE quickly removes all rows from a set of tables. It has the same
       effect as an unqualified DELETE on each table, but since  it  does  not
       actually  scan  the  tables it is faster. Furthermore, it reclaims disk
       space immediately, rather than requiring a subsequent VACUUM operation.
       This is most useful on large tables.

PARAMETERS

       name   The   name  (optionally  schema-qualified)  of  a  table  to  be
              truncated.

       CASCADE
              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 CASCADE.

       RESTRICT
              Refuse to  truncate  if  any  of  the  tables  have  foreign-key
              references from tables that are not to be truncated. This is the
              default.

NOTES

       Only the owner of a table can TRUNCATE it.

       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 CASCADE option can be used to
       automatically include all dependent tables — but be very  careful  when
       using this option, or else you might lose data you did not intend to!

       TRUNCATE  will  not run any ON DELETE triggers that might exist for the
       tables.

              Warning:

              TRUNCATE is not MVCC-safe (see in the documentation for  general
              information about MVCC). After truncation, the table will appear
              empty to all concurrent transactions, even if they are  using  a
              snapshot taken before the truncation occurred. This will only be
              an issue for a transaction that did  not  access  the  truncated
              table  before the truncation happened — any transaction that has
              done so would hold at least an ACCESS SHARE  lock,  which  would
              block  TRUNCATE  until that transaction completes. So truncation
              will not cause any apparent inconsistency in the table  contents
              for  successive  queries  on  the same table, but it could cause
              visible inconsistency between  the  contents  of  the  truncated
              table and other tables in the database.

              TRUNCATE  is  transaction-safe,  however: the truncation will be
              safely rolled back  if  the  surrounding  transaction  does  not
              commit.

EXAMPLES

       Truncate the tables bigtable and fattable:

       TRUNCATE bigtable, fattable;

       Truncate the table othertable, and cascade to any tables that reference
       othertable via foreign-key constraints:

       TRUNCATE othertable CASCADE;

COMPATIBILITY

       There is no TRUNCATE command in the SQL standard.