On peut trouver quelles sont les contraintes CHECK sur les colonnes via la table information_schema.constraint_column_usage et en obtenir les clauses testées via la table information_schema.check_constraints.
Techniquement il est possible de générer une requête qui fasse que le SGBD va calculer chaque clause et produire un champ à true ou false pour chacune. Par exemple si on a une clause col>=1 and col<=10 et col2 is not null et les valeurs 12 et 'abc' à insérer, il faudrait générer et lancer:
SELECT col>=1 AND col<=10, col2 is not null FROM (values(12,'abc')) AS s(col,col2)
Dans le résultat de cette requête, un champ à la valeur false indique que la contrainte correspondante serait violée si on insérait la donnée.
Partager