Introduction aux déclencheurs en PL / SQL

Les déclencheurs de base de données sont le code PL / SQL qui s'exécute en fonction d'un événement dans la base de données tel qu'un INSERT, UPDATE, Alter, Drop, Login, Logoff, etc. Les déclencheurs de base de données nous aident à garder les codes SQL simples et courts. Les déclencheurs de base de données sont utiles pour gérer toutes les modifications et garder une trace de toutes ces modifications à l'aide de la mise à jour, de la suppression, de la modification, de la connexion, de la déconnexion, etc. dans la base de données, les schémas de base de données et ses tables.

Nous avons 3 types de déclencheurs DB:

1. DML (Data Manipulation Language): les déclencheurs DML s'exécutent sur INSERT, UPDATE & DELETE dans les tableaux.

2. DDL (Data Definition Language): ce déclencheur s'exécute sur Create, Alter, Drop, Analyze, Audit, Grant, etc.

3. Événement de base de données: exécution de déclencheurs d'événements de base de données basés sur LOGON, LOGOFF, Suspend, démarrage de la base de données, arrêt de la base de données et autres erreurs de base de données.

Voici une autre caractéristique des déclencheurs DB:

Un déclencheur DB: il s'agit d'un code PL / SQL lié à une vue de table ou à un événement DB.
Exécute en fonction de l'activité de la base de données

  • Avant / Après, INSÉRER, METTRE À JOUR, SUPPRIMER.
  • Exécuté une fois par événement déclencheur ou une fois par ligne affectée par le déclencheur.

Exécuter en fonction du démarrage / arrêt / erreur système / arrêt du chargement des données.

Comment créer des déclencheurs en PL / SQL?

Voici les étapes suivantes pour créer des déclencheurs en PL / SQL

1. Déclencheurs DML

Ce déclencheur est divisé en deux types:

  • Après les déclencheurs / Pour les déclencheurs
  • Au lieu de déclencheurs

APRÈS que le déclencheur se déclenche après avoir déclenché l'action. Les instructions DELETE, UPDATE et INSERT sont un exemple de déclencheurs After.
INSTEAD Of triggers agit à la place de l'action. Les instructions DELETE, UPDATE et INSERT en font également partie.

Exemple:

Nous utiliserons les tables Employee et EmployeeAudit pour nos exemples.

Script SQL pour créer une table Employee:

CREATE TABLE Employee
(
Id int Primary Key,
Name nvarchar(30),
Salary int,
Gender nvarchar(10),
DepartmentId int
)
Insert data into Employee table
Insert into Employee values (1, 'Prakash', 5000, 'Male', 3)
Insert into Employee values (2, 'Robert', 3400, 'Male', 2)
Insert into Employee values (3, 'Anji', 6000, 'Female', 1)

Table des employés

Script SQL pour créer une table EmployeeAudit:

CREATE TABLE EmployeeAudit
(
Id int identity(1, 1) primary key,
AuditData nvarchar(1000)
)

nous capturerons l'ID et la date et l'heure chaque fois qu'un nouvel employé est ajouté dans la table EmployeeAudit. Il s'agit du programme le plus simple à définir AFTER TRIGGER pour l'événement INSERT.

2. Déclencheurs DDL

Il est principalement utilisé pour empêcher des modifications particulières de votre schéma de base de données

Syntaxe

CREATE TRIGGER trigger_name
ON (DATABASE | ALL SERVER)
(WITH ddl_trigger_option) FOR (event_type | event_group )
AS (sql_statement)

trigger_name consiste à spécifier le nom défini du déclencheur après les mots-clés CREATE TRIGGER. en outre, vous n'avez pas besoin de spécifier un schéma de base de données car il n'est pas lié à une table ou une vue de base de données réelle.

Base de données | All Server: si le déclencheur se déclenche sur les événements de portée serveur, nous pouvons utiliser ALL SERVER. Utilisez DATABASE si le déclencheur se déclenche sur des événements de portée de base de données

ddl_trigger_option: il spécifie la clause ENCRYPTION et / ou EXECUTE AS.

type_événement | event_group: Le event_group est un groupe d'événements event_type tels que DDL_TABLE_EVENTS & The event_type indique un événement DDL qui provoque le déclenchement du déclencheur tel que ALTER_TABLE, CREATE_TABLE, etc.

Exemple:

Déclencher l'exécution en réponse à l'événement DDL CREATE_TABLE.

CREATE TRIGGER MyFirstTrigger
ON Database
FOR CREATE_TABLE
AS
BEGIN
Print 'New table created'
END

Vérifiez si le déclencheur a été créé sous le dossier de déclenchement de la base de données et si vous ne l'obtenez pas, veuillez actualiser le dossier (déclencheur de base de données).

3. Événement de base de données

Il peut être utilisé pour tous les événements de base de données tels que LOGON, LOGOFF, Suspend, Database startup, Database Shut down

Syntaxe:

CREATE (OR REPLACE) TRIGGER trigger_name
(BEFORE | AFTER) (database_event) ON (DATABASE | SCHEMA)
DECLARE
…some code…
END;

trigger_name consiste à spécifier le nom défini du déclencheur après les mots-clés CREATE TRIGGER.

L' événement database_event se produit essentiellement dans des bases de données telles que la déconnexion, la connexion, l'arrêt, etc. Nous pouvons sélectionner la base de données ou le schéma que ce déclencheur fonctionnera.

Exemple: déclencheur de déconnexion

Ici, nous pouvons démontrer le déclencheur d'événement de base de données LOGOFF. Ce déclencheur créera un enregistrement dans une table (fermeture de session) lorsque quelqu'un se déconnecte.
Ce déclencheur enregistrera le nom de l'utilisateur et l'heure de déconnexion.

Création d'une table de déconnexion:

create table logoff_table (
who varchar2(30),
when date
);

Création d'un déclencheur de déconnexion:

create trigger trg_logoff
before logoff on database
begin
insert into logoff_table values(sys_context('userenv', 'session_user'), sysdate);
end;
/

Ici, dans le déclencheur ci-dessus, nous avons créé Tigger pour surveiller la déconnexion de tout utilisateur. Ce déclencheur sera exécuté après la déconnexion des utilisateurs de la base de données. La table de déconnexion stockera certains détails du nom d'utilisateur et l'heure de déconnexion (Vous pouvez décider des détails selon les exigences).

De la même manière, nous pouvons créer un autre déclencheur qui surveillera et stockera les détails de connexion pour une base de données particulière. Les déclencheurs d'événements de base de données sont utiles pour le dépannage.
Tous les noms de table sont spécifiques aux exigences, nous pouvons changer leurs noms selon les exigences.

Avantage des déclencheurs en PL / SQL

  • Bon pour les pistes d'audit.
  • Bon pour manipuler des données.
  • Appliquez des schémas de sécurité complexes.
  • Appliquer les règles métier.
  • Empêcher les changements dans la base de données et le schéma.
  • Le code PL / SQL est plus court à l'aide de déclencheurs.
  • Gardez une trace des changements dans la base de données, le schéma et les tables DB.
  • La gestion des enregistrements d'actions dans la base de données est utile pour le dépannage.
  • Pas besoin de vérifier manuellement les modifications dans la base de données, le déclencheur prend toujours lui-même une action sur une occurrence d'événement particulière.

Conclusion

Voici ce chapitre, nous avons appris les types de déclencheurs tels que les déclencheurs d'événements DDL, DML et de base de données. Nous avons également appris qu'un déclencheur DDL peut être utilisé pour INSERT, UPDATE, DELETE, etc. Les instructions et les déclencheurs DML sont conçus pour Create, Alter, Drop, etc. Suspension, action de démarrage de la base de données effectuée dans la base de données.

La syntaxe de chaque déclencheur est facile à comprendre et peut être facilement convertie en code PL / SQL. Le programme PL / SQL tel que Déconnexion déclenchée a donné un aperçu de la façon dont le déclencheur de base de données fonctionnera au cas où un utilisateur se déconnecterait de sa base de données. Dans DML Trigger, nous avons démontré comment AFTER Trigger fonctionnera une fois qu'il y aura une nouvelle entrée de tout nouvel employé. Les déclencheurs DDL sont utiles pour empêcher toute modification particulière de la base de données et du schéma.

Articles recommandés

Ceci est un guide des déclencheurs en PL / SQL. Ici, nous discutons Comment créer des déclencheurs en PL / SQL avec des exemples et des avantages. Vous pouvez également consulter l'article suivant.

  1. Curseurs en PL / SQL
  2. Instruction CASE en PL / SQL
  3. Qu'est-ce que PL / SQL?
  4. Commandes PL / SQL
  5. Clé primaire vs clé étrangère | Principales différences