Passer au contenu principal
eLearner.app
Module 12 · Leçon 4 sur 448/57 dans le cours~12 min
Leçons du module (4/4)

Triggers pratiques et audit

Maintenant que nous avons appris à forger des balles intelligentes (les fonctions de déclenchement), nous devons les monter sur de véritables armes amorcées en attendant un événement : voici les véritables déclencheurs ! Un déclencheur attache formellement une fonction créée précédemment et lui demande de déclencher « AVANT » ou « APRÈS » un événement CRUD particulier sur une table donnée.

Il existe de nombreuses options ; par exemple, FOR EACH ROW le déclenche une fois par ligne affectée, donc si une requête groupée est une MISE À JOUR GLOBALE sur 5 millions de lignes, elle déclencherait 5 millions de micro-exécutions — soyez prudent avec cela !

SQL
CREATE TRIGGER sync_inventory_trigger
-- Event options
AFTER INSERT OR UPDATE ON order_items
-- Modus operandi (singular or global macro-block FOR EACH STATEMENT)
FOR EACH ROW
-- Run the forged action
EXECUTE FUNCTION update_stock();

Le déclencheur est invisible pour JavaScript et maintiendra de manière autonome le stock parfaitement cohérent en se basant strictement sur les mises à jour soumises en toute sécurité au moteur.

Automatisation de Updated_At

Il existe un problème commercial persistant où nous oublions de transmettre { updated_at: new Date() } dans nos modèles de mise à jour JS. Une fonction de déclenchement set_updated_at combinée à un déclencheur BEFORE UPDATE supprime cette nuisance, mettant à jour silencieusement chaque changement d'enregistrement de manière autopoïétique.

Essayez-le vous-même

Exercice#sql.m12.l4.e1
Tentatives : 0Chargement…

Créez un déclencheur nommé 'trg_force_uppercase'. Attachez-le dans la phase 'AVANT INSERT' sur la table 'clients'. Forcez le calcul ligne par ligne 'POUR CHAQUE LIGNE' et invoquez l'exécution de la fonction 'force_uppercase_name()'. Remarque : recréez également l'UDF 'force_uppercase_name' (puisque l'environnement est isolé) en haut du code, puis ajouter la déclaration du déclencheur.

Chargement de l'éditeur…
Afficher l'indice

Syntaxe du texte : créez d'abord la fonction, puis ajoutez CREATE TRIGGER trg_force_uppercase AVANT INSERT SUR les clients POUR CHAQUE LIGNE EXECUTE FUNCTION force_uppercase_name();

Solution disponible après 3 tentatives

Exercice#sql.m12.l4.e2
Tentatives : 0Chargement…

Tuez le capteur ! Parfois, nous souhaitons transmettre des fichiers de départ bruts ou des modifications natives temporaires, en contournant les audits bruyants. La suppression d'un déclencheur est incroyablement simple (vous ne supprimez pas la fonction organique, vous supprimez uniquement la liaison du capteur). Utilisez le mot-clé 'DROP TRIGGER', en spécifiant le nom et la pièce jointe globale.

Chargement de l'éditeur…
Afficher l'indice

Pensez à préciser d'où. DROP TRIGGER trg_force_uppercase SUR les clients ;

Solution disponible après 3 tentatives