Обсуждение: Rule creation and evaluation order
Hi all.
I've already read the friendly manual but have not found any clue.
I would like to do some calculation on the rows of a table every time it
gets updated.
I've decided to use:
create table table1 (
  afield integrer,
  id integrer
);
create table table2 (
  overall integer,
  id integer unique not null,
  primary key(id)
);
create rule myrule
  as on update
  to table1
  do also
    update table2
      set overall=(select count(*) from table1 where afield>0 and
table1.id=NEW.id)
      from table1
      where table2.id = NEW.id
;
What it seems to me is that the table "table1 t1" is being processed *before*
the update and not *after*. Infact the sum() returns the old value.
Is this the expected behaviour?
How can I have my rule action run *after* the actual update?
Thanks to anyone that can help me.
--
Vincenzo Romano
--
Maybe Computers will never be as intelligent as Humans.
For sure they won't ever become so stupid. [VR-1988]
			
		Vincenzo Romano <vincenzo.romano@gmail.com> writes:
> How can I have my rule action run *after* the actual update?
You can't.  You might consider using a trigger, instead.
            regards, tom lane
			
		Il 16:58, mercoledì 29 giugno 2005, Tom Lane ha scritto: > Vincenzo Romano <vincenzo.romano@gmail.com> writes: > > How can I have my rule action run *after* the actual update? > > You can't. You might consider using a trigger, instead. > > regards, tom lane Many thanks, Tom! I have not found much infos about rules and their (weird) behaviour. Do you have any useful pointer to this topic? Thanks again. -- Vincenzo Romano -- Maybe Computers will never be as intelligent as Humans. For sure they won't ever become so stupid. [VR-1988]