Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Utilisation efficace des déclencheurs SQL
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
Bases de donnéesDéveloppement

Utilisation efficace des déclencheurs SQL

L'Équipe Alphorm Par L'Équipe Alphorm 21 novembre 2024
Partager
Partager

La gestion des modifications dans une base de données peut être complexe, notamment pour suivre les changements de données sensibles.

Sans un suivi adéquat, des erreurs peuvent survenir, compromettant l’intégrité des données et la conformité aux politiques internes.

Les déclencheurs SQL, utilisant les attributs :OLD et :NEW, offrent une solution robuste pour automatiser ces processus, garantissant un suivi précis et cohérent des modifications.

Table de matière
Attributs :OLD et :NEW en SQLDéclencheurs SQL selon l'opérationOptimiser avec la clause REFERENCINGHistorisation des salaires en SQLContrôle des salaires par déclencheursFAQConclusion

Formation Le langage PL/SQL : Le Guide Complet

Maîtriser le langage SQL en environnement SGBDR. SQL n'aura plus de secrets pour vous !

Découvrir cette formation

Dans les bases de données, les déclencheurs (ou triggers ) permettent d’exécuter des actions spécifiques en réponse à des événements comme les INSERT , UPDATE , et DELETE . L’objectif de cette section est de comprendre comment utiliser les valeurs des attributs : OLD et : NEW pour manipuler les données avant et après une modification.

Attributs :OLD et :NEW en SQL

Lors de la création de déclencheurs, il est souvent nécessaire d’accéder aux valeurs d’un enregistrement avant et après une modification. C’est ici que les attributs :OLD et :NEW interviennent :

Diagramme des valeurs OLD et NEW en SQL
  • :OLD.nom_attribut: Permet d’accéder à la valeur avant la modification.
  • :NEW.nom_attribut: Permet d’accéder à la valeur après la modification.

Cette distinction est particulièrement utile pour suivre les changements effectués sur des données sensibles, comme les salaires dans une entreprise. Maintenant, examinons comment les attributs :OLD et :NEW sont accessibles selon le type d’opération.

Déclencheurs SQL selon l'opération

Les comportements des attributs :OLD et :NEW varient selon le type d’opération exécutée :

Opération
Accessibilité de :OLD
Accessibilité de :NEW
Description
INSERT
Non accessible
Accessible
Comme l’enregistrement est nouveau, il n’existe pas de valeur précédente, donc :OLD n’est pas accessible.
UPDATE
Accessible
Accessible
Cette opération modifie des enregistrements existants, donc les deux valeurs :OLD et :NEW sont disponibles.
DELETE
Accessible
Non accessible
Étant donné que l’enregistrement est supprimé, il n’existe plus de valeur nouvelle, donc :NEW n’est pas accessible.

Tableau 1 : Les comportements des attributs :OLD et :NEW

Infos : L’utilisation des attributs :OLD et :NEW est limitée aux déclencheurs de niveau enregistrement (FOR EACH ROW), car ils nécessitent une exécution individuelle pour chaque ligne modifiée.

Maintenant que nous avons couvert les bases des attributs :OLD et :NEW, voyons comment créer des alias pour ces attributs avec la clause REFERENCING.

Optimiser avec la clause REFERENCING

Pour améliorer la lisibilité et la flexibilité des déclencheurs, il est possible de créer des alias pour :OLD et :NEW grâce à la clause REFERENCING. Cette clause permet de donner des noms personnalisés à ces valeurs, facilitant ainsi leur utilisation dans des déclencheurs complexes.

Diagramme déclencheurs SQL avec OLD et NEW

La syntaxe pour utiliser la clause REFERENCING est la suivante :

				
					
 REFERENCING [ OLD AS <nom_ancien> ] [ NEW AS <nom_nouveau> ]

				
			

Grâce à cette clause, vous pouvez nommer :OLD et :NEW selon le contexte du déclencheur, par exemple ANCIEN_SALAIRE et NOUVEAU_SALAIRE. Ceci améliore non seulement la clarté, mais rend également le code plus intuitif.

Passons maintenant à des exemples pratiques pour illustrer l’utilisation de :OLD et :NEW dans des scénarios concrets.

Historisation des salaires en SQL

Dans cet exemple, nous allons créer un déclencheur qui enregistre chaque modification des salaires dans une table de log. Cela permet de garder une trace de l’historique des modifications de chaque enregistrement, utile pour des audits ou des vérifications.

Pour stocker les informations de log, nous devons d’abord créer une table LOG_MAJ_SALAIRE :

				
					
 CREATE TABLE LOG_MAJ_SALAIRE (
date_maj DATE,
utilisateur VARCHAR2(30),
numero_sal NUMBER,
ancien_salaire NUMBER,
nouveau_salaire NUMBER,
ancienne_commission NUMBER,
nouvelle_commission NUMBER
);

				
			

Ensuite, créons un déclencheur qui enregistrera les modifications de salaire dans cette table à chaque mise à jour :

				
					
 CREATE OR REPLACE TRIGGER log_modif_salaire
AFTER UPDATE ON salaries
FOR EACH ROW
BEGIN
INSERT INTO LOG_MAJ_SALAIRE (
date_maj, utilisateur, numero_sal, ancien_salaire, nouveau_salaire, ancienne_commission, nouvelle_commission
)
VALUES (
SYSDATE, USER, :OLD.numero_sal, :OLD.salaire, :NEW.salaire, :OLD.commission, :NEW.commission
);
END log_modif_salaire;
/

				
			

Pour tester notre déclencheur, exécutons une mise à jour des salaires :

				
					
 UPDATE salaries SET salaire = salaire * 1.10;
SELECT * FROM LOG_MAJ_SALAIRE;

				
			

Résultat attendu

La table LOG_MAJ_SALAIRE contiendra les enregistrements des modifications de salaire, incluant les anciennes et nouvelles valeurs. Cela nous permet de suivre les ajustements de salaire dans le temps.

Table des mises à jour par déclencheurs SQL

Voyons maintenant un autre exemple plus axé sur le contrôle de la validité des mises à jour de salaire.

Contrôle des salaires par déclencheurs

Ce deuxième exemple montre comment créer un déclencheur pour s’assurer que les augmentations de salaire respectent certaines règles. Par exemple, une augmentation de plus de 50 % ou une réduction du salaire pourraient être interdites.

  • Déclencheur pour vérifier les modifications de salaireLe déclencheur suivant contrôle si l’augmentation dépasse 50 % ou si le salaire est réduit, et lève des erreurs si l’une de ces conditions est remplie :
				
					
 CREATE OR REPLACE TRIGGER checkSalaire
BEFORE UPDATE OF salaire ON salaries
REFERENCING OLD AS ANCIEN_SALAIRE NEW AS NOUVEAU_SALAIRE
FOR EACH ROW
BEGIN
CASE
WHEN :NOUVEAU_SALAIRE.salaire >= :ANCIEN_SALAIRE.salaire * 1.50 THEN
RAISE_APPLICATION_ERROR(-20000, 'Augmentation supérieure à 50 % interdite');
WHEN :NOUVEAU_SALAIRE.salaire < :ANCIEN_SALAIRE.salaire THEN
RAISE_APPLICATION_ERROR(-20001, 'Diminution du salaire interdite');
END CASE;
END checkSalaire;

				
			

Test du déclencheur
Essayons de mettre à jour un salaire pour vérifier le fonctionnement du déclencheur :

				
					
 UPDATE salaries SET salaire = salaire / 2;

				
			

Après exécution de cette requête il s’affiche le déclencheur suivant :

Erreur ORA-20001: Diminution du salaire interdite

Avec ces deux exemples, nous voyons comment :OLD et :NEW peuvent être utilisés pour contrôler et surveiller les modifications dans une base de données, en respectant les règles métier et en assurant la traçabilité des changements.

Formez-vous gratuitement avec Alphorm !

Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

FAQ

Comment fonctionnent les déclencheurs SQL?
Les déclencheurs SQL s’activent en réponse à des événements comme INSERT, UPDATE et DELETE. Ils permettent d’exécuter des actions automatiques, en utilisant les attributs :OLD pour accéder aux valeurs avant modification et :NEW pour celles après modification. Ces outils sont essentiels pour assurer la cohérence et le suivi des données au sein d’une base de données.
Qu'est-ce que la clause REFERENCING en SQL?
La clause REFERENCING en SQL permet de créer des alias pour les attributs :OLD et :NEW, améliorant ainsi la lisibilité des déclencheurs. En nommant ces attributs selon le contexte, on peut rendre le code plus intuitif et adapté aux besoins spécifiques de l’application, surtout dans des scénarios complexes où la clarté est cruciale.
Pourquoi utiliser des déclencheurs pour l'historisation des données?
Utiliser des déclencheurs pour l’historisation des données permet de garder une trace des modifications apportées aux enregistrements, comme les salaires. Cela facilite les audits et vérifications en stockant automatiquement les changements dans des tables de log. Les déclencheurs garantissent que chaque modification est enregistrée, assurant ainsi une traçabilité complète et précise.
Comment contrôler les modifications de salaire avec des déclencheurs?
Contrôler les modifications de salaire avec des déclencheurs SQL implique de vérifier les conditions d’augmentation ou de réduction avant leur application. Par exemple, un déclencheur peut interdire des augmentations supérieures à 50% ou des réductions de salaire, en levant des erreurs si ces règles sont violées, assurant ainsi le respect des politiques salariales définies.
Quels sont les avantages d'utiliser :OLD et :NEW dans les déclencheurs?
Les attributs :OLD et :NEW dans les déclencheurs SQL offrent un accès direct aux valeurs avant et après modification. Cela est crucial pour suivre les changements, valider les mises à jour et déclencher des actions spécifiques en fonction des valeurs modifiées. Ces fonctionnalités renforcent la gestion des données en assurant la cohérence et l’intégrité des enregistrements.

Conclusion

En intégrant les déclencheurs SQL dans vos bases de données, vous pouvez automatiser et sécuriser la gestion des modifications de données essentielles. Quelle autre fonctionnalité SQL pourriez-vous explorer pour optimiser vos processus de gestion des données?

ÉTIQUETÉ : PL/SQL
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Laisser un commentaire Laisser un commentaire

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Utilisation efficace des déclencheurs SQL

© Alphorm - Tous droits réservés