A restrictive constraint rejects any data manipulation that violates a business rule, and results in an error message.
You can turn a restrictive constraint into a warning constraint by calling the MessageLanguage method of the internal RulesEngine component from an INVOKE statement. Therefore, a warning constraint is an invocative constraint.
A warning constraint results in a warning message, but the data manipulation still takes place. It is the user who decides to proceed with the manipulation, or to rollback the transaction.
It is also possible to provide an information message instead of a warning message.