Latest web development tutorials

SQLite Trigger

trigger SQLite est une fonction de rappel, il exécute automatiquement lorsque l'événement de base de données d'appel / spécifié se produit. Voici les principaux points sur la gâchette SQLite: SQLiteTrigger (déclenchement) est la fonction de rappel de la base de données, il exécute automatiquement / appel lors d' un événement de base de données spécifié se produit.Voici les principaux points à propos des déclencheurs SQLite (Trigger) de:

  • déclencheurs SQLite (Trigger) déclencheurs peuvent être spécifiés au moment de l'apparition d'une des tables de base de données spécifiques SUPPR, INSERT ou UPDATE, ou déclenchées quand une ou plusieurs colonnes spécifiées d'une mise à jour de la table se produit.

  • SQLite ne supporte que les déclencheurs FOR EACH ROW (Trigger), non déclencheurs FOR EACH STATEMENT (Trigger). Par conséquent, spécifier explicitement FOR EACH ROW est optionnel.

  • Clause WHEN et le déclencheur (Trigger) action peut être consulté en utilisant un formulaireNEW.column-nom et OLD.column-nameréférences insérées, supprimées ou éléments de ligne mis à jour, colonne nom est associé à la détente des colonnes de table nom.

  • Clause WHEN, si elle est fournie, est vrai que pour la clause WHEN spécifie les lignes à exécuter des instructions SQL. Si aucune clause WHEN est exécutée instructions SQL pour toutes les lignes.

  • Après la mise en œuvre de l'action de déclenchement AVANT ou APRES mot-clé détermine quand l'action de déclenchement, la décision est insérée dans les lignes associées, ou avant de supprimer ou de modifier.

  • Lorsque la table associée à la gâchette supprimé supprimer automatiquement déclenchement (Trigger).

  • Pour modifier la table doit exister dans la même base de données que la gâchette est attachée tables ou vues, et doit utiliser uniquement letablename, au lieu database.tablename.

  • Une fonction RAISE SQL spéciale () peut être utilisé pour déclencher une exception au sein du programme.

grammaire

Créer undéclencheur (Trigger) La syntaxe de base est la suivante:

CREATE TRIGGER [AVANT | APRÈS] event_name 
ON nom_table
BEGIN
 - La logique de déclenchement va ici ....
END;

Ici, event_name peut être mentionné dans la table table_namedeINSERT, DELETE etles opérations de base de données UPDATE. Vous pouvez éventuellement spécifier FOR EACH ROW après le nom de la table.

sont spécifiées dans l'opération UPDATE dans une ou plusieurs tables sur les colonnes créent un déclencheur syntaxe (Trigger) Ce qui suit:

CREATE TRIGGER [AVANT | APRÈS] MISE À JOUR DE column_name 
ON nom_table
BEGIN
 - La logique de déclenchement va ici ....
END;

Exemples

Supposons une situation où nous voulons être inséré dans la table société nouvellement créée (si elle existe déjà, supprimez le re-créé) dans chacun des tests de vérification de tenue de dossiers:

sqlite> CREATE TABLE COMPANY (
   ID INT PRIMARY KEY NOT NULL,
   NOM TEXT NOT NULL,
   AGE INT NOT NULL,
   ADRESSE CHAR (50),
   SALAIRE RÉEL
);

Afin de maintenir les essais de vérification, nous allons créer une nouvelle table appelée AUDIT. Chaque fois que la table de l'entreprise a une nouvelle entrée d'enregistrement, le message du journal sera inséré:

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

Ici, ID est AUDIT ID d'enregistrement, EMP_ID l'ID de la table COMPANY, DATE gardera horodatage est créé lorsque COMPANY est enregistré. Donc, maintenant laissez-nous créer un déclencheur sur la table de société comme suit:

sqlite> CREATE TRIGGER audit_log APRES INSERT 
ON COMPANY
BEGIN
   INSERT INTO AUDIT (EMP_ID, ENTRY_DATE) VALUES (new.ID, datetime ( «maintenant»));
END;

Nous allons maintenant commencer à insérer un enregistrement dans la table COMPANY, ce qui conduira à la création d'une table d'audit de journalisation d'audit. Donc, nous allons créer un enregistrement dans la table COMPANY, comme suit:

sqlite> INSERT INTO COMPANY (ID, nom, âge, adresse, SALAIRE)
VALUES (1, 'Paul', 32, 'California', 20000.00);

Cela va créer un enregistrement dans la table COMPANY suivante:

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

Dans le même temps, nous allons créer un enregistrement dans la table d'audit. Cet enregistrement est le résultat d'un déclencheur, qui est le déclencheur, nous insérons des opérations sur les tables COMPANY créé (Trigger). De même, peuvent créer des déclencheurs sur UPDATE et DELETE (Trigger).

EMP_ID ENTRY_DATE
---------- -------------------
12013-04-05 06:26:00

Listes déclenchent (triggers)

Vous pouvez lister tous les déclencheurs de tablesqlite_master, comme suit:

sqlite> SELECT nom DE sqlite_master
WHERE type = 'trigger';

L'instruction SQLite ci-dessus présente une seule entrée, comme suit:

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

Si vous voulez inscrire le déclencheur sur une table spécifique, utilisez la clause AND pour joindre des tables sont les suivantes:

sqlite> SELECT nom DE sqlite_master
WHERE type = 'trigger' ET tbl_name = 'ENTREPRISE';

L'instruction SQLite ci-dessus présente une seule entrée, comme suit:

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

Retirez le déclencheur (TRIGGER)

Ce qui suit est une commande DROP peut être utilisée pour supprimer le déclencheur existant:

sqlite> trigger_name DROP TRIGGER;