trigger! raises exception on non-valid state change