A Language for Specifying Static and Dynamic Integrity Constraints