Non-enforced constraints just show a warning to the user, but do not prevent committing the feature. Enforced constraints block users from comitting non compliant features. Any constraints detected by the provider are always enforced.
Avoids cluttering QgsField API