I'm trying to write some code in a trigger that fires on both an insert and an update. At one point I need to update a column either on an insert or if the value of the column has changed. The following code fails because the OLD value is not defined: if TG_OP = ''INSERT'' or (TG_OP = ''UPDATE'' and NEW.column1 != coalesce(OLD.column1,''--'')) then column2 := ''CHANGED''; end if; Shouldn't OLD.column1 not even be evaluated when the other if statement in the group in parentheses is false or when the earlier if statement is true? Is there a way around this other than separating the code into two independent if statements, duplicating the action statements? -- Mike Nolan ---------------------------(end of broadcast)--------------------------- TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq