CREATE TRIGGER reduceSalary BEFORE UPDATE OF salary ON person FOR EACH ROW WHEN (NEW.salary < OLD.salary) DECLARE lessMoney EXCEPTION; BEGIN RAISE lessMoney; EXCEPTION WHEN lessMoney THEN raise_application_error(-20001,'Attempt to reduce salary. Rejected!'); END; CREATE FUNCTION reduce_salary() RETURNS TRIGGER AS $reduceSalary$ BEGIN IF NEW.salary < OLD.salary THEN RAISE EXCEPTION 'Salary cannot be reduced'; END IF; RETURN NEW; END; $reduceSalary$ LANGUAGE plpgsql; CREATE TRIGGER reduceSalary BEFORE UPDATE ON person FOR EACH ROW EXECUTE PROCEDURE reduce_salary();