I'm trying to use a rule to maintain a last_changed field.
CREATE RULE rule1 AS ON UPDATE TO thetable DO UPDATE thetable SET last_changed = now() WHERE id = new.id;
Try instead something like
CREATE RULE rule1 AS ON UPDATE TO thetable DO INSTEAD UPDATE thetable SETlast_changed = now(),field1 =
new.field1,field2= new.field2,...fieldn = new.fieldn WHERE id = new.id;
That is, use an INSTEAD rule and replace each field explicitly.
Cheers,
Brook