When Constraints Are Evaluated
A constraint is evaluated if any of the columns referred to in the constraint's WHERE clause is manipulated. This means that constraints are evaluated at different moments during application processing, depending on their scope (domain, single-record, multi-record), their type (restrictive, corrective), whether or not they are transitional, and whether or not they are deferred.
The most common reason for a constraint to be evaluated is as a direct result of user actions such as pressing a key (to move to the next field, for example), closing a window, or choosing a menu option such as File, Save. These user actions not only cause constraint evaluation, but may also cause execution of other actions (defined by the developer), and these actions in turn can lead to further data manipulation and constraint evaluation.
If a restrictive constraint is violated, the cursor will remain in the field until the user has corrected the data.
If a record is affected by a corrective constraint, the Rules Engine performs the correction, which is a data manipulation and can therefore activate other constraints, or even itself (recursive constraint).