BEGIN
  SQL - Language Statements
 
 
  BEGIN
  start a transaction block
 
 
BEGIN [ WORK | TRANSACTION ]
 
 
 
  Description
  
   By default, 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).
   BEGIN initiates a transaction block, that is,
   all statements after BEGIN command will be
   executed in a single transaction until an explicit  or .  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 changing several related
   tables: other sessions will be unable to see the intermediate states
   wherein not all the related updates have been done.
  
 
  
 
  Parameters
  
   
    WORK
    TRANSACTION
    
     
      Optional key words. They have no effect.
     
    
   
  
 
  
 
  Diagnostics
  
   
    BEGIN
    
     
      This signifies that a new transaction has been started.
     
    
   
   
    WARNING:  BEGIN: already a transaction in progress
    
     
      This indicates that a transaction was already in progress.  The
      current transaction is not affected.
     
    
   
  
 
  
 
  Notes
  
    has the same functionality
   as BEGIN>.
  
   
  
   Use  or
   
   to terminate a transaction.
  
   
  
   If you turn the configuration parameter autocommit> off,
   then BEGIN> is not required: any SQL command
   automatically starts a transaction.
  
 
 
  Examples
  
   To begin a transaction block:
BEGIN;
  
 
 
 
  Compatibility
  
   BEGIN is a PostgreSQL
   language extension.  There is no explicit BEGIN
   command in the SQL standard; transaction initiation is
   always implicit and it terminates either with a
   COMMIT or ROLLBACK statement.
  
  
   Other relational database systems may offer an autocommit feature
   as a convenience.
  
  
   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.