Triggers
15 min
Niveau 9
Les Triggers SQLite sont des fonctions de rappel de la base de données, qui sont automatiquement exécutées/invoquées lorsqu'un événement spécifique de la base de données se produit. Voici les points importants concernant les déclencheurs SQLite.
- Un déclencheur SQLite peut être spécifié pour se déclencher chaque fois qu'un DELETE, INSERT ou UPDATE d'une table de base de données particulière se produit ou chaque fois qu'un UPDATE se produit sur une ou plusieurs colonnes spécifiées d'une table.
- Pour l'instant, SQLite ne supporte que les déclencheurs FOR EACH ROW, pas les déclencheurs FOR EACH STATEMENT. Par conséquent, spécifier explicitement FOR EACH ROW est facultatif.
- La clause WHEN et les actions du déclencheur peuvent accéder aux éléments de la ligne insérée, supprimée ou mise à jour en utilisant des références de la forme NEW.column-name et OLD.column-name, où column-name est le nom d'une colonne de la table à laquelle le déclencheur est associé.
- Si une clause WHEN est fournie, les instructions SQL spécifiées ne sont exécutées que pour les lignes pour lesquelles la clause WHEN est vraie. Si aucune clause WHEN n'est fournie, les instructions SQL sont exécutées pour toutes les lignes.
- Le mot clé BEFORE ou AFTER détermine quand les actions du déclencheur seront exécutées par rapport à l'insertion, la modification ou la suppression de la ligne associée.
- Les déclencheurs sont automatiquement abandonnés lorsque la table à laquelle ils sont associés est abandonnée.
- La table à modifier doit exister dans la même base de données que la table ou la vue à laquelle le déclencheur est attaché et on doit utiliser juste tablename et non database.tablename.
- Une fonction SQL spéciale RAISE() peut être utilisée dans un programme de déclenchement pour lever une exception.
Syntaxe
Voici la syntaxe de base pour créer un trigger.
CREATE TRIGGER trigger_name [BEFORE|AFTER] event_name
ON table_name
BEGIN
-- Trigger logic goes here....
END;
Ici, event_name peut être une opération de base de données INSERT, DELETE et UPDATE sur la table mentionnée table_name. Vous pouvez éventuellement préciser FOR EACH ROW après le nom de la table.
Voici la syntaxe pour créer un déclencheur sur une opération UPDATE sur une ou plusieurs colonnes spécifiées d'une table.
CREATE TRIGGER trigger_name [BEFORE|AFTER] UPDATE OF column_name
ON table_name
BEGIN
-- Trigger logic goes here....
END;
Exemple
Besoin d'aide ?
Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !