You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-user@db.apache.org by Alexander Schatten <al...@gmx.at> on 2006/08/11 15:31:17 UTC

Triggers and Transaction behaviour

I could not find proper information in the manuals about triggers and 
transactions.


If e.g., within a transaction, say, a insert statement is performed, and 
this statement fires off a trigger, and then later on, the transaction 
is rolled back: what about the activities of the trigger?


Is there some more detailed document about this behaviour?



thank you!



Alex

Re: Triggers and Transaction behaviour

Posted by Alexander Schatten <al...@gmx.at>.
Stanley Bradbury wrote:
> Hi Alex -
> The answer depends on the type of trigger.  A transaction occurs 
> within a single connection.  For simple, single SQL statement triggers 
> the trigger activities are part of the transaction (execute within the 
> context of the current connection) and are rolled back.  Should a SQL 
> statement trigger fail it raises an exception that is passed to the 
> calling routine.  This is covered here:
> http://db.apache.org/derby/docs/dev/devguide/cdevspecial49460.html

thank you. that answers my question.

Re: Triggers and Transaction behaviour

Posted by Stanley Bradbury <St...@gmail.com>.
Alexander Schatten wrote:
> I could not find proper information in the manuals about triggers and 
> transactions.
>
>
> If e.g., within a transaction, say, a insert statement is performed, 
> and this statement fires off a trigger, and then later on, the 
> transaction is rolled back: what about the activities of the trigger?
>
>
> Is there some more detailed document about this behaviour?
>
>
>
> thank you!
>
>
>
> Alex
>
Hi Alex -
The answer depends on the type of trigger.  A transaction occurs within 
a single connection.  For simple, single SQL statement triggers the 
trigger activities are part of the transaction (execute within the 
context of the current connection) and are rolled back.  Should a SQL 
statement trigger fail it raises an exception that is passed to the 
calling routine.  This is covered here:
http://db.apache.org/derby/docs/dev/devguide/cdevspecial49460.html

When the trigger calls a JDBC function then the answer depends on how 
the JDBC is coded.  The background for considering this type of trigger 
is laid here:
http://db.apache.org/derby/docs/dev/devguide/cdevspecial93497.html
NOTE:  I find it best to have trigger code always share the transaction 
space (#1).

You can code the JDBC two ways.
 >> 1. Coding to share the transaction space:
http://db.apache.org/derby/docs/dev/devguide/cdevspecial29620.html

 >> 2. Coding that operates outside of the transaction space:
http://db.apache.org/derby/docs/dev/devguide/cdevspecial16181.html