DB2 - Déclencheurs

Ce chapitre décrit les déclencheurs, leurs types, la création et la suppression des déclencheurs.

introduction

Un déclencheur est un ensemble d'actions, qui sont effectuées pour répondre à une opération INSERT, UPDATE ou DELETE sur une table spécifiée dans la base de données. Les déclencheurs sont stockés dans la base de données à la fois. Ils gèrent la gouvernance des données. Ils peuvent être consultés et partagés entre plusieurs applications. L'avantage d'utiliser des déclencheurs est que si une modification doit être effectuée dans l'application, elle est effectuée au niveau du déclencheur; au lieu de changer chaque application qui accède au déclencheur. Les déclencheurs sont faciles à entretenir et accélèrent le développement d'applications. Les déclencheurs sont définis à l'aide d'une instruction SQL «CREATE TRIGGER».

Types de déclencheurs

Il existe deux types de déclencheurs:

1. AVANT les déclencheurs

Ils sont exécutés avant toute opération SQL.

2. APRÈS les déclencheurs

Ils sont exécutés après toute opération SQL.

Créer un déclencheur BEFORE

Voyons comment créer une séquence de trigger:

Syntax:

db2 create sequence <seq_name>

Example: Création d'une séquence de déclencheurs pour la table shopper.sales1

db2 create sequence sales1_seq as int start with 1 increment by 1

Syntax:

db2 create trigger <trigger_name> no cascade before insert on 
<table_name> referencing new as <table_object> for each row set 
<table_object>.<col_name>=nextval for <sequence_name>

Example: Création d'un déclencheur pour la table shopper.sales1 pour insérer automatiquement les numéros de clé primaire

db2 create trigger sales1_trigger no cascade before insert on 
shopper.sales1 referencing new as obj for each row set 
obj.id=nextval for sales1_seq

Maintenant, essayez d'insérer des valeurs:

db2 insert into shopper.sales1(itemname, qty, price) 
values('bicks', 100, 24.00)

Récupération des valeurs de la table

Voyons comment récupérer les valeurs d'une table:

Syntax:

db2 select * from <tablename>

Example:

db2 select * from shopper.sales1

Output:

ID       ITEMNAME       QTY 
-------  ------------   ---------- 
    3      bicks            100 
    2      bread            100 
  
  2 record(s) selected.

Créer un déclencheur AFTER

Voyons comment créer un déclencheur après:

Syntax:

db2 create trigger <trigger_name> no cascade before insert on 
<table_name> referencing new as <table_object> for each row set
 <table_object>.<col_name>=nextval for <sequence_name>

Example: [Pour insérer et récupérer les valeurs]

db2 create trigger sales1_tri_after after insert on shopper.sales1 
for each row mode db2sql begin atomic update shopper.sales1 
set price=qty*price; end

Output:

//inseting values in shopper.sales1 
db2 insert into shopper.sales1(itemname,qty,price) 
values('chiken',100,124.00) 
//output 
ID    ITEMNAME       QTY         PRICE 
----- -------------- ----------- -----------                      
    3 bicks          100         2400.00 
    4 chiken         100         12400.00 
    2 bread          100         2400.00 

	3 record(s) selected.

Abandonner un déclencheur

Voici comment un déclencheur de base de données est supprimé:

Syntax:

db2 drop trigger <trigger_name>

Example:

db2 drop trigger slaes1_trigger