On Tue, 23 Mar 2004, Erik Thiele wrote:
> On Tue, 23 Mar 2004 10:17:31 -0600
> Bruno Wolff III <bruno@wolff.to> wrote:
>
> > On Tue, Mar 23, 2004 at 15:19:13 +0100,
> > Erik Thiele <erik@thiele-hydraulik.de> wrote:
> > > now sadly i am getting this kind of problem:
> > >
> > >
> > > zeit=> insert into a select
> > > nextval('delmeseq'),personalnumber,datum,datum from calendar where
> > > type=10409;
> > > INSERT 0 581 <-- see, 581 inserts which is pretty much :)
> > > zeit=> commit; <-- now i have to wait for 581 calls of alwayscheck
> > >
> > >
> > > since alwayscheck is not the fastest function on earth, i'd like to have
> > > it called on commit time if at least one of table a or b was modified,
> > > but always only once per commit. is there a way to formulate this:
> > >
> > > ARRANGE FOR CALL OF FUNCTION alwayscheck() ON COMMIT WHEN AT LEAST ONE
> > > OF TABLE a OR TABLE b WAS MODIFIED BUT CALL THE FUNCTION AT MOST ONE
> > > TIME;
I didn't see the original, but...
One way to do hack this up is triggers which insert a row into another
holding table if and only if it hasn't already (something like transaction
id or some such - something you don't need to worry about concurrency
with) which itself has a deferred trigger on insert (which should probably
remove the row as part of its behavior).