Thread: starting a stored procedure+rule AFTER an insert

starting a stored procedure+rule AFTER an insert

From
"Bima Djaloeis"
Date:
Hi, Newbie here,

I have implemented a stored procedure that writes out the newest DB entry on insert, and combined it with a rule.

1) create function newcache() returns void AS 'newCache', 'newCache' language c;
2) create rule newcacherule AS on insert to caches do also select newcache();

The problem is that newcacherule fires BEFORE the insert has taken place, so effectively, I always just get the 2nd newest entry to write into my text file while the newest entry is "stuck in the queue" until a new insert come. How can I execute my rule AFTER the insert has taken place?

Thanks for reading!

Re: starting a stored procedure+rule AFTER an insert

From
Douglas McNaught
Date:
"Bima Djaloeis" <bima.djaloeis.uni@googlemail.com> writes:

> I have implemented a stored procedure that writes out the newest DB
> entry on insert, and combined it with a rule.
>
> 1) create function newcache() returns void AS 'newCache', 'newCache' language
> c;
> 2) create rule newcacherule AS on insert to caches do also select newcache();
>
> The problem is that newcacherule fires BEFORE the insert has taken
> place, so effectively, I always just get the 2nd newest entry to
> write into my text file while the newest entry is "stuck in the
> queue" until a new insert come. How can I execute my rule AFTER the
> insert has taken place?

Rules effectively happen at query parse time.  You probably want an
AFTER trigger instead.

-Doug

Re: starting a stored procedure+rule AFTER an insert

From
"Bima Djaloeis"
Date:
Thanks for the reply, is there any online reference / tutorial for this?

-BD

2007/10/8, Douglas McNaught <doug@mcnaught.org>:
"Bima Djaloeis" <bima.djaloeis.uni@googlemail.com > writes:

> I have implemented a stored procedure that writes out the newest DB
> entry on insert, and combined it with a rule.
>
> 1) create function newcache() returns void AS 'newCache', 'newCache' language
> c;
> 2) create rule newcacherule AS on insert to caches do also select newcache();
>
> The problem is that newcacherule fires BEFORE the insert has taken
> place, so effectively, I always just get the 2nd newest entry to
> write into my text file while the newest entry is "stuck in the
> queue" until a new insert come. How can I execute my rule AFTER the
> insert has taken place?

Rules effectively happen at query parse time.  You probably want an
AFTER trigger instead.

-Doug