Comment désactiver un déclencheur dans Oracle

Comment Desactiver Un Declencheur Dans Oracle



Les déclencheurs de base de données, ou déclencheurs en abrégé, font référence à des procédures stockées qui sont exécutées en réponse à une activité d'événement dans un objet de base de données donné.

Cela diffère des procédures stockées standard, qui nécessitent une invocation explicite de la part de l'utilisateur. Étant donné que les déclencheurs sont automatisés, ils sont déclenchés ou déclenchés lorsque l'événement spécifié se produit, quel que soit l'utilisateur connecté ou l'état du serveur.







La plupart des bases de données relationnelles prennent en charge l'utilisation de déclencheurs pour effectuer des tâches automatisées telles que la prévention des transactions non valides, la journalisation des événements, la récupération et l'enregistrement des statistiques d'accès aux tables, etc.



Une fois qu'un déclencheur est créé, il s'exécute toujours chaque fois que l'événement associé se produit. Toutefois, vous souhaiterez peut-être empêcher temporairement ou définitivement l'exécution d'un déclencheur. C'est là que la fonction de désactivation de la gâchette entre en jeu.



Cet article discutera des étapes rapides et faciles pour désactiver un déclencheur dans une base de données Oracle. Si vous débutez avec les déclencheurs Oracle et que vous souhaitez savoir comment en créer un, consultez le lien suivant :





https://linuxhint.com/oracle-create-trigger

Création d'un déclencheur de test

Avant de discuter des méthodes de désactivation d'un déclencheur, configurons un exemple de déclencheur à des fins de démonstration.



REMARQUE : Cette section ne couvre pas la façon de définir ou d'utiliser les déclencheurs de base de données.

Nous voulons créer un déclencheur qui enregistre l'activité de l'utilisateur après une opération de suppression. Par exemple, supposons que nous ayons une table sample_data avec les informations comme indiqué :

Nous devons d'abord créer une table dans laquelle nous stockons les journaux pour chaque activité de suppression.

Le schéma de la table est le suivant :

créer une table sample_data_logs(
numéro d'identification,
prénom varchar2(50),
adresse_ip varchar2(20),
btc_address varchar2(50),
credit_card varchar2(50),
identifiant varchar2(40),
delete_datedate,
supprimé_par varchar2(20)
);

Ensuite, nous devons définir un déclencheur qui est exécuté après un événement de suppression. La définition du déclencheur est fournie comme suit :

créer ou remplacer le déclencheur log_user
après suppression
sur sample_data
pour chaque ligne
déclarer
action_username varchar2(20);
commencer
sélectionnez l'utilisateur dans action_username à partir de dual ;
insérer dans sample_data_logs
valeurs (:OLD.id,
:OLD.prénom,
:OLD.adresse_ip,
:OLD.adresse_btc,
:OLD.credit_card,
:OLD.identifiant,
date système,
nom_utilisateur_action );
fin;

Pour tester le déclencheur, effectuons une opération de suppression à partir de la table sample_data comme indiqué :

supprimer de sample_data où id = 1 ;

Enfin, nous pouvons vérifier la table des journaux pour nous assurer que l'opération de suppression a été enregistrée :

sélectionnez * dans sample_data_logs ;

Production:

Comme nous pouvons le voir, le tableau contient une entrée des données précédentes avant la suppression, ainsi que le nom d'utilisateur qui a effectué l'activité de suppression et l'heure de la suppression.

Dans les sections suivantes, nous montrerons comment désactiver le déclencheur précédent. Avant de le faire, assurez-vous que votre déclencheur cible est fonctionnel et que vous disposez des autorisations suffisantes pour l'activer ou le désactiver.

Désactiver un déclencheur à l'aide de PL/SQL

La première et la plus simple des méthodes de désactivation d'un déclencheur consiste à utiliser une instruction SQL. Heureusement, Oracle nous fournit l'instruction ALTER TRIGGER dont la syntaxe est fournie comme suit :

ALTER TRIGGER nom_trigger DISABLE ;

Par exemple, pour désactiver le déclencheur log_user que nous avons créé précédemment, nous pouvons exécuter ce qui suit :

modifier le déclencheur log_user désactiver ;

Une fois exécuté, le déclencheur ne conservera plus de copie des anciennes données et de l'utilisateur qui a effectué la suppression, comme illustré ci-dessous :

supprimer de sample_data où id = 2 ;

Vérifiez les journaux :

sélectionnez * dans sample_data_logs ;

Production:

Comme nous pouvons le voir, nous n'avons toujours qu'un seul enregistrement.

Désactiver un déclencheur à l'aide de SQL Developer

Nous pouvons utiliser l'utilitaire SQL Developer pour désactiver un déclencheur dans l'interface graphique. Commencez par vous connecter au développeur SQL.

Accédez à la section 'Déclencheurs':

Développez le répertoire des déclencheurs et localisez le déclencheur que vous souhaitez désactiver. Faites un clic droit sur le nom du déclencheur et sélectionnez 'Désactiver'.

Confirmez l'opération 'Désactiver' et cliquez sur 'Appliquer'.

Une fois désactivé, Oracle grise le déclencheur, indiquant qu'il est inactif.

Conclusion

Cet article a exploré comment désactiver un déclencheur Oracle à l'aide d'instructions PL/SQL et de l'utilitaire SQL Developer.