manpagez: man pages & more
man truncate(l)
Home | html | info | man
TRUNCATE()                       SQL Commands                       TRUNCATE()




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 trun-
              cated.

       CASCADE
              Automatically truncate all tables that have  foreign-key  refer-
              ences  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  refer-
              ences  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 ta-
              ble  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  ta-
              ble and other tables in the database.

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



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.



SQL - Language Statements         2008-09-19                        TRUNCATE()

postgresql 8.3.4 - Generated Sun Oct 5 09:39:42 CDT 2008
© manpagez.com 2000-2024
Individual documents may contain additional copyright information.