Gene <genekhart@xxxxxxxxx> writes: > I'm not sure why it's detecting recursion in this case when the rule > conditional should be false Rules are macros, which means that expansion has to terminate statically, not dynamically. For the particular purpose you seem to have here, it'd be a lot more manageable and a lot more efficient to use a BEFORE UPDATE trigger instead of a rule. if new.pattern <> old.pattern then new.flag = false; end if; return new; Or are you trying to change some other row than the one being updated? regards, tom lane