Thread: Deferred triggers?

Deferred triggers?

From
CSN
Date:
Perhaps another possible feature request! I've looked
through the docs and it doesn't appear that it's
possible to create deferred triggers - i.e. they don't
get called unless the current transaction commits. (My
understanding is that they currently get called
immediately whether or not there is a transaction in
progress.)

CSN



____________________________________________________
Start your day with Yahoo! - make it your home page
http://www.yahoo.com/r/hs


Re: Deferred triggers?

From
"Guy Rouillier"
Date:
CSN wrote:
> Perhaps another possible feature request! I've looked
> through the docs and it doesn't appear that it's
> possible to create deferred triggers - i.e. they don't
> get called unless the current transaction commits.

The semantics of such a thing appear to be indeterminate.  What happens
if something in the trigger would have caused the original transaction
to fail?  Most people would expect all changes made by the original
transaction, as well as those made by the trigger, to be rolled back.
Using deferred triggers as you've defined it would then require chainged
transactions, which could get very messy.

> (My understanding
> is that they currently get called immediately whether or not there is
> a transaction in progress.)

There is always a transaction in progress.

--
Guy Rouillier


Re: Deferred triggers?

From
CSN
Date:
> CSN wrote:
> > Perhaps another possible feature request! I've
looked
> > through the docs and it doesn't appear that it's
> > possible to create deferred triggers - i.e. they
don't
> > get called unless the current transaction commits.

>
> The semantics of such a thing appear to be
indeterminate.  What happens
> if something in the trigger would have caused the
original transaction
> to fail?  Most people would expect all changes made
by the original
> transaction, as well as those made by the trigger,
to be rolled back.
> Using deferred triggers as you've defined it would
then require chainged
> transactions, which could get very messy.

That doesn't sound too messy - the trigger could
either cause the current transaction to abort, or
commit.

> > (My understanding
> > is that they currently get called immediately
whether or not there is
> > a transaction in progress.)
>
> There is always a transaction in progress.

I meant when you explicitly enclose multiple statments
in a single transaction.



>
> --
> Guy Rouillier



____________________________________________________
Start your day with Yahoo! - make it your home page
http://www.yahoo.com/r/hs