create rule view_a_r_update as on update to view_a
do instead
update a set two = new.two;
The problem is that your INSTEAD UPDATE rule is not constrained in any
way; it DOES hit every row. Instead, do something like:
create rule view_a_r_update as on update to view_a
do instead
update a set two = new.two
where id = old.id;
where id is a primary key in your table.
Cheers,
Brook