Frank Joerdens <frank(at)joerdens(dot)de> writes:
> And here's the rule (it doesn't do anything real or interesting, I just
> simplified it to the point where it looked like the example):
> CREATE RULE insert_level AS
> ON INSERT TO tree
> WHERE new.id > 0 DO
> UPDATE tree SET leveling = 1
> WHERE tree.oid = new.oid;
What's happening is that "new.id" is effectively still NULL at the point
where the rule is processed, so the rule WHERE condition fails. I'm not
sure why you're bothering with that WHERE condition anyway ... but this
seems to be another argument for moving INSERT's default-value-insertion
step to before the rule rewriter. (There was some discussion of this
point just a few days ago, IIRC.)
regards, tom lane