BEGIN initiates a transaction block, that is, all statements
after BEGIN command will be executed in a single transaction
until an explicit COMMIT or ROLLBACK 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. START TRANSACTION has the
same functionality as BEGIN. Issuing BEGIN when already inside a
transaction block will provoke a warning message. The state of
the transaction is not affected. BEGIN is a PostgreSQL