BEGIN
  SQL - Language Statements
 
 
  BEGIN
  start a transaction block
 
 
  BEGIN
 
 
BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]
where transaction_mode is one of:
    ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
    READ WRITE | READ ONLY
 
 
 
  Description
  
   BEGIN initiates a transaction block, that is,
   all statements after a BEGIN command will be
   executed in a single transaction until an explicit  or  is given.
   By default (without BEGIN),
   PostgreSQL executes
   transactions in autocommit
 mode, that is, each
   statement is executed in its own transaction and a commit is
   implicitly performed at the end of the statement (if execution was
   successful, otherwise a rollback is done).
  
  
   Statements are executed more quickly in a transaction block, because
   transaction start/commit requires significant CPU and disk
   activity. Execution of multiple statements inside a transaction is
   also useful to ensure consistency when making several related changes:
   other sessions will be unable to see the intermediate states
   wherein not all the related updates have been done.
  
  
   If the isolation level or read/write mode is specified, the new
   transaction has those characteristics, as if
    
   was executed.
  
 
  
 
  Parameters
  
   
    WORK
    TRANSACTION
    
     
      Optional key words. They have no effect.
     
    
   
  
  
   Refer to  for information on the meaning
   of the other parameters to this statement.
  
 
  
 
  Notes
  
    has the same functionality
   as BEGIN>.
  
   
  
   Use  or
   
   to terminate a transaction block.
  
  
   Issuing BEGIN> when already inside a transaction block will
   provoke a warning message.  The state of the transaction is not affected.
   To nest transactions within a transaction block, use savepoints 
   (see ).
  
  
   For reasons of backwards compatibility, the commas between successive
   transaction_modes may be
   omitted.
  
 
 
  Examples
  
   To begin a transaction block:
BEGIN;
  
 
 
 
  Compatibility
  
   BEGIN is a PostgreSQL
   language extension.  It is equivalent to the SQL-standard command
   , which see for additional
   compatibility information.
  
  
   Incidentally, the BEGIN key word is used for a
   different purpose in embedded SQL. You are advised to be careful
   about the transaction semantics when porting database applications.
  
 
 
  See Also