FirebirdSQL logo
 INDEXTRIGGER 

WITH CHECK OPTIONS

La clause facultative WITH CHECK OPTIONS exige que la vue modifiée vérifie les données nouvellement insérées ou modifiées par rapport à la condition spécifiée dans la clause WHERE de l’instruction de sélection SELECT.Lorsqu’on tente d’insérer un nouvel enregistrement ou de modifier un enregistrement, on vérifie si la condition de la clause WHERE est remplie pour cet enregistrement ; si la condition n’est pas remplie, l’insertion/modification n’est pas effectuée et un message de diagnostic correspondant est émis.

La clause WITH CHECK OPTION ne peut être spécifiée dans une instruction de création de vue que si la clause WHERE est spécifiée dans l’instruction principale SELECT de la vue.Sinon, un message d’erreur s’affiche.

Note

Si la clause WITH CHECK OPTIONS est utilisée, le système vérifie les valeurs d’entrée par rapport à la condition de la clause WHERE avant de les transmettre à la table de base.Ainsi, si les valeurs d’entrée ne passent pas le contrôle, les phrases DEFAULT ou les triggers sur la table de base, ne peuvent pas corriger les valeurs d’entrée car les actions ne seront jamais exécutées.

De plus, les champs de vue non spécifiés dans l’instruction INSERT sont transmis à la table de base en tant que valeurs NULL, indépendamment de leur présence ou absence dans l’instruction WHERE.Par conséquent, les valeurs par défaut définies sur ces champs de la table de base ne seront pas appliquées.D’autre part, les déclencheurs seront appelés et fonctionneront comme prévu.

Pour les vues sans clause WITH CHECK OPTIONS, les champs manquants dans l’instruction INSERT ne sont pas transmis du tout, donc toutes les valeurs par défaut seront appliquées.

Droits d’exécution

L’exécution du code de vue SQL se fait toujours avec les privilèges de l’utilisateur qui le définit (propriétaire).