Tutoriel classi...SE CONNECTER
Tutoriel classique SQLite
auteur:php.cn  temps de mise à jour:2022-04-13 17:05:02

Déclencheur SQLite


Le déclencheur SQLite est une fonction de rappel de la base de données, qui sera automatiquement exécutée/appelée lorsqu'un événement de base de données spécifié se produit. Voici les points clés concernant les déclencheurs de SQLite : SQLite Trigger (Trigger) est une fonction de rappel de la base de données, qui sera automatiquement exécutée/appelée lorsque l'événement de base de données spécifié se produit. Voici les points clés concernant les déclencheurs de SQLite :

  • Les déclencheurs de SQLite peuvent être spécifiés pour se déclencher lorsqu'un DELETE, INSERT ou UPDATE se produit dans une table de base de données spécifique, ou lorsqu'ils sont déclenchés lorsqu'un ou plusieurs les colonnes de la table spécifiée sont mises à jour.

  • SQLite ne prend en charge que les déclencheurs FOR EACH ROW (Triggers), et non les déclencheurs FOR EACH STATEMENT (Triggers). Par conséquent, la spécification explicite de FOR EACH ROW est facultative.

  • Les clauses WHEN et les actions de déclenchement sont accessibles à l'aide des formulaires NEW.column-name et OLD.column-name Références insérées, élément de ligne supprimé ou mis à jour, où nom-colonne est le nom d'une colonne de la table associée au déclencheur.

  • Si une clause WHEN est fournie, l'instruction SQL est exécutée uniquement pour les lignes spécifiées pour lesquelles la clause WHEN est vraie. Si aucune clause WHEN n'est fournie, l'instruction SQL est exécutée pour toutes les lignes.

  • Le mot clé BEFORE ou AFTER détermine quand l'action déclencheur est exécutée, que ce soit avant ou après l'insertion, la modification ou la suppression de la ligne associée.

  • Lorsque la table associée au déclencheur est supprimée, le déclencheur (Trigger) est automatiquement supprimé.

  • 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 seul nom de la table doit être utilisé, pas base de données.nom de la table.

  • Une fonction SQL spéciale RAISE() peut être utilisée pour déclencher des exceptions levées dans le programme.

Syntaxe

La syntaxe de base pour créer un déclencheur (Trigger) est la suivante :

CREATE TRIGGER trigger_name [BEFORE|AFTER] event_name
ON table_name
BEGIN
​​​​-- La logique du déclencheur va ici....
END;

Ici, event_name peut être des opérations de base de données INSERT, DELETE et UPDATE sur la table mentionnée table_name. Vous pouvez éventuellement spécifier FOR EACH ROW après le nom de la table.

Voici la syntaxe pour créer un déclencheur (Trigger) sur une ou plusieurs colonnes spécifiées de la table lors d'une opération UPDATE :

CREATE TRIGGER trigger_name [BEFORE|AFTER] UPDATE OF nom_colonne
ON nom_table
BEGIN
​​​​​​-- La logique de déclenchement va ici....
END;

Exemple

Supposons une situation dans laquelle nous souhaitons maintenir un test d'audit pour chaque enregistrement inséré dans la table COMPANY nouvellement créée (ou le supprimer et le recréer s'il existe déjà) :

sqlite> CRÉER UNE TABLE ENTREPRISE(
ID INT CLÉ PRIMAIRE NON NULL,
NOM TEXTE NON NULL,
AGE INT NON NULL,
ADRESSE CHAR(50),
SALAIRE RÉEL
);

Pour continuer l'audit expérimental, nous allons créer une nouvelle table appelée AUDIT. Chaque fois qu'il y a un nouvel élément d'enregistrement dans la table COMPANY, le message de journal y sera inséré :

sqlite> CREATE TABLE AUDIT(
EMP_ID INT NOT NULL,
ENTRY_DATE TEXT NOT NULL
);

Ici, ID est l'ID de l'enregistrement AUDIT, EMP_ID est l'ID de la table COMPANY et DATE contiendra l'horodatage de la création de l'enregistrement dans COMPANY. Alors, créons maintenant un déclencheur sur la table COMPANY comme suit : EMP_ID, ENTRY_DATE) VALUES (new.ID, datetime('now'));

END;

Maintenant, nous allons commencez à insérer des enregistrements dans la table COMPANY, ce qui entraînera la table AUDIT. Créez un enregistrement de journal d'audit dans . Créons donc un enregistrement dans la table COMPANY comme suit :


sqlite> INSERT INTO COMPANY (ID,NAME,AGE, ADDRESS,SALARY)
VALUES (1, 'Paul', 32 , 'California', 20000.00 );

Cela créera l'enregistrement suivant dans la table COMPANY :

ID NOM AGE ADRESSE SALAIRE
-- --- ----- ---------- ---------- ---------- ----------
1Paul See More 32 Californie 20000.0

Parallèlement, un enregistrement sera créé dans la table AUDIT. Cet enregistrement est le résultat du déclencheur que nous avons créé sur la table COMPANY lors de l'opération INSERT. De même, des déclencheurs peuvent être créés sur les opérations UPDATE et DELETE selon les besoins.

EMP_ID ENTRY_DATE
---------- -------------------
1 04/2013 -05 06:26:00

Liste des déclencheurs (TRIGGERS)

Vous pouvez lister tous les déclencheurs de la table sqlite_master comme indiqué ci-dessous :

sqlite> SELECT name FROM sqlite_master
WHERE type = 'trigger';

L'instruction SQLite ci-dessus ne listera qu'une seule entrée, comme suit :

name
----------
audit_log

Utilisez AND si vous souhaitez lister les déclencheurs sur une table spécifique. La clause connecte le nom de la table comme suit :

sqlite> SELECT name FROM sqlite_master
WHERE type = 'trigger' AND tbl_name = 'COMPANY';

L'instruction SQLite ci-dessus ne listera qu'une seule entrée, comme suit :

nom
----------
audit_log

Supprimer les déclencheurs (TRIGGERS)

Voici la commande DROP, qui peut être utilisée pour supprimer des déclencheurs existants :

sqlite> DROP TRIGGER trigger_name;


Site Web PHP chinois