Même si l'on choisit de ne pas réécrire le code existant, il est intéressant que des contraintes vérifient les mêmes conditions déjà vérifiées par la logique applicative interne. Dans cette situation, les contraintes se comportent comme un mécanisme de sécurité pour les erreurs dans la logique applicative ou pour les
Utiliser des contraintes pour assurer l’intégrité des données (2)
transactions qui entrent dans le système
sans passer par le filtre du processus de
validation d’application normal. De ce
point de vue, on peut utiliser les contraintes de la même manière que des
règles de clés en double: il incombe au
programmeur de vérifier que les enregistrements
ajoutés à un fichier ne produisent
pas de clés en double. Mais si tout le
reste échoue, la base de données empêchera
la création de clés en double et génèrera
un message d’erreur système.
C’est une bonne utilisation des
contraintes et, comme celles-ci sont très
efficaces, la pénalité de performances subie
par une double vérification de la
même condition (en supposant que le
code applicatif vérifie correctement la
condition de contrainte) est probablement
acceptable. Toutefois, cette utilisation
des contraintes ne fait rien pour
améliorer l’architecture applicative. La
deuxième difficulté en matière de
contraintes concerne la manière dont les
erreurs de contrainte sont signalées aux
applications en langage évolué (HLL,
high level language). Pour bénéficier pleinement
des contraintes, les applications
qui mettent à jour la base de données
doivent traiter les erreurs de contraintes.
Malheureusement, il n’est pas toujours
facile de déterminer quelle contrainte a
été violée par une certaine transaction et
de signaler cette information à l’utilisateur.
Ainsi, si plus d’une contrainte est associée
à un fichier particulier, l’ordre
dans lequel les contraintes sont vérifiées
est déterminé par le type de contrainte et
son ordre assigné, qui peut être complètement
arbitraire. De plus, dès qu’une erreur
de contrainte survient, le traitement
des autres contraintes s’arrête. Par conséquent,
il est difficile d’écrire un modèle
d’application iSeries standard qui présente
toutes les erreurs à la fois à l’utilisateur.
En outre, alors qu’un programme
ILE RPG peut distinguer une erreur de
contrainte d’autres types d’erreurs de fichier
(pas d’enregistrement trouvé, par
exemple) d’après le champ *STATUS
dans l’INFDS (information data structure),
il peut être difficile de savoir quelle
contrainte a causé une erreur et un appel
d’API est nécessaire pour obtenir des informations
détaillées sur l’erreur.
Cette complexité explique pourquoi la plupart des développeurs iSeries continuent
à utiliser les contraintes strictement
comme un mécanisme fail-safe
pour améliorer le code d’interception
d’erreurs existant. Mais, face à un projet
de modernisation d’applications d’envergure,
il vaut mieux investir dans la création
d’une suite de programmes de service
qui traitent les erreurs de
contraintes. Une fois cette infrastructure
créée, il est facile de l’adapter pour couvrir
les fichiers et contraintes supplémentaires.
Les contraintes appliquent le plus
haut niveau de partitionnement des applications
– les règles de gestion imposées
directement par la base de données.
Malheureusement, les techniques de traitement
des erreurs requises pour traiter
les erreurs détectées pendant l’imposition
des contraintes limitent les avantages
de celles-ci.
Téléchargez cette ressource
Plan de sécurité Microsoft 365
Les attaquants savent comment prendre le contrôle de votre tenant Microsoft 365, et vous, savez-vous comment le reprendre en main ?
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- ESET accélère en France et mise sur l’IA face à la montée des cybermenaces
- Souveraineté des données : cessons de traiter le symptôme, attaquons-nous aux causes
- Asys accélère sur la planification intelligente avec l’acquisition de m-work
- Computex 2026 : 5 signaux forts à retenir
Articles les + lus
Computex 2026 : 5 signaux forts à retenir
La chaîne d’approvisionnement, point de rupture récurent du SI
Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
Analyse Patch Tuesday Mai 2026
À la une de la chaîne Tech
- Computex 2026 : 5 signaux forts à retenir
- La chaîne d’approvisionnement, point de rupture récurent du SI
- Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
- Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
- Analyse Patch Tuesday Mai 2026
