Javier,

I guess and I may be wrong that the main reason for not allowing DDL operation in a trigger is due to the fact that a DDL operation will get implicitly committed, and as a trigger is always called in the context of a transaction, it cannot allow an implicit (in this case) commit of a DDL statement, neither an explicit commit...

--francois

On 8/20/07, Javier Fonseca V. <fonsecajavier@gmail.com> wrote:
Yes.  I agree with the importance of the footprint.  I don't know if DDL in Triggers would be too hard/big/convenient to implement, but the Derby Team must have their reasons. 
 
Anyway, it looks like I'll have to call the procedure directly in the application that I'm designing... that doesn't look so hard...
 
Thanks for your replies.
 
Javier
 

 
On 8/20/07, derby@segel.com < derby@segel.com> wrote:

 

Just a commentů

 

Just because another database can do something doesn't mean that it's necessarily a good idea.

 

The other issue with Derby is that until someone determines a way to create a "plug n play" architecture of features, it becomes more important to decide if Derby is going to be a "full fledged" database, or a lightweight embedded database.

 

As you increase the size of the footprint, you make it harder to embed. And as you add features, you are increasing the size of the footprint.

 

 


From: Francois Orsini [mailto: francois.orsini@gmail.com]
Sent: Monday, August 20, 2007 5:26 AM
To: Derby Discussion
Subject: Re: DDL in Trigger Procedure

 

Javier,

DDL statements are not allowed in triggers, directly or via a procedure called from a trigger. I checked the codeline.

--francois

On 8/19/07, Javier Fonseca V. < fonsecajavier@gmail.com> wrote:

Hello.  I'm trying to do a trigger that fires after an INSERT INTO a table.

 

This trigger will call a Java procedure that performs some operations in the Database ... and then decide to CREATE TABLE according to a sequence for later local replication purposes.

 

But I can't make it work.  It's failing in the CREATE TABLE step.  It looks like DDL is not supported in Derby Triggers, even if they are in a stored procedure.  If I call the procedure manually with some test values, it works.  But I need it to work it triggered in Derby.  I already did it in PostgreSQL (master DB) and I don't know why Derby doesn't allow me to do the same.

 

Thanks for your replies,

 

Javier Fonseca

Barranquilla, Colombia