Bonjour ,
Est ce qu'un trigger invalid peux créer un probleme dans une base de donnée ?
Bonjour ,
Est ce qu'un trigger invalid peux créer un probleme dans une base de donnée ?
Que signifie "Créer un problème" ?
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
Bonjur ,
je me suis trompé dans la création de la discussion en fait , je parle de la création d'un trigger invalid qui créerai un probleme sur une base de donnée.
Qui par exemple empecherai la création de lignes dans une voir plusieurs tables .
Lorsqu'un déclencheur est invalide, c'est comme s'il n'existait pas, et il n'a donc aucun effet.
Consultant / formateur Oracle indépendant
Certifié OCP 12c, 11g, 10g ; sécurité 11g
Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration
Donc un declencheur invalide mais actif ne peux pas avoir d'effet .
Un déclencheur possède d'une part un statut d'activation (ENABLED ou DISABLED) visible dans la colonne STATUS de DBA_TRIGGERS, et d'autre part un statut de validité (VALID ou INVALID) visible dans la colonne STATUS de DBA_OBJECTS.
Un déclencheur peut tout à fait être INVALID (code source comportant des erreurs qui empêchent sa compilation) et ENABLED, mais en effet, il ne s'exécutera pas, et ne produira donc aucun effet.
Consultant / formateur Oracle indépendant
Certifié OCP 12c, 11g, 10g ; sécurité 11g
Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration
Merci Pomalaix pour ta reponse .
Il y a certains de mes collegues qui me disent que parfois un trigger meme invalid, peux avoir des effets.
Chose que j'ai peine a croire tout de meme...
Un trigger INVALID peut en effet affecter les données... en n'effectuant pas les opérations qu'il serait censé faire s'il était valide
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
Merci beaucoup pour vos reponses , je comprends mieux le probleme que j'ai rencontré.
Je pense que vous devez détailler/exemplifier vos propos
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 SQL> create table t(a int); Table created SQL> create trigger bit 2 before insert on t 3 for each row 4 begin 5 a := 1; 6 end; 7 / Warning: Trigger created with compilation errors SQL> insert into t values (2); insert into t values (2) ORA-04098: Déclencheur 'MNI.BIT' non valide. Echec de la revalidation SQL> select status 2 from user_triggers 3 where trigger_name = 'BIT' 4 / STATUS -------- ENABLED SQL> select status 2 from user_objects 3 where object_name = 'BIT' 4 / STATUS ------- INVALID
Salut Marius, c'est en effet une bonne idée, et qui s'appliquerait avec bonheur à 80% de tes interventions
Dans le cas présent, il manque à ton test le petit final qui démontre que j'ai dit une énormité.
De fait, si le déclencheur est INVALID et ENABLED, il y a tentative d'exécution, mais sans succès, ce qui provoque l'annulation de l'instruction déclenchante.
Le déclencheur invalide a donc bel et bien un effet (voir ligne 23 dans l'exemple ci-dessous).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 SQL> create table t(a int); Table créée. SQL> create trigger bit 2 before insert on t 3 for each row 4 begin 5 a := 1; 6 end; 7 / Avertissement : Déclencheur créé avec erreurs de compilation. SQL> insert into t values (2); insert into t values (2) * ERREUR à la ligne 1 : ORA-04098: Déclencheur 'BIT' non valide. Echec de la revalidation SQL> select * from t; aucune ligne sélectionnée SQL> select status 2 from user_triggers 3 where trigger_name = 'BIT'; STATUS -------- ENABLED SQL> select status 2 from user_objects 3 where object_name = 'BIT'; STATUS ------- INVALID
Consultant / formateur Oracle indépendant
Certifié OCP 12c, 11g, 10g ; sécurité 11g
Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration
en conclusion :
Un déclencheur invalid peux créer un problème sur une application qui par exemple lors de la création d'un utilisateur l'enregistre dans une table si le déclencheur a ce moment là est sollicité l'application va générer un message d'erreur qui peux être bloquant.
Merci pour vos réponses
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager