Joe Conway wrote:
> Bruce Momjian wrote:
> >>most useful approach.  The analogy to SET hadn't occurred to me.
> > 
> > 
> > Yea, the SET behavior appeared pretty queer to me, but now that I have
> > used it, I am getting used to it.
> > 
> 
> So does that mean:
> 
>    set autocommit to off;
>    begin;
>    insert into foo values('a');
>    insert into bar values('b');
>    truncate table foobar;
> 
> will automatically commit the two inserts?

No, the entire transaction will aborted because TRUNCATE has to be at
the start of a multi-statement transaction.  This will also fail:

>    set autocommit to off;
>    begin;
>    truncate table foobar;
>    insert into foo values('a');
>    insert into bar values('b');

but this will work:

>    set autocommit to off;
>    truncate table foobar;
>    insert into foo values('a');
>    insert into bar values('b');

In the last case, the TRUNCATE will happen, and the INSERTs will be in
their own multi-statement transaction.  A SET in place of TRUNCATE will
behave the same way.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to