IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

[Debug] [Trigger] erreur d'exe pas très précise


Sujet :

Langage SQL

  1. #1
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut [Debug] [Trigger] erreur d'exe pas très précise
    Salut tout le monde,

    Voila, je code en java et pour mon appli, j'ai du faire un trigger. Je suis pas très famillière du SQL, à part quelques bases, je n'y connais pas grand chose. Mon trigger compile mais il ne veut pas s'executer. J'ai vérifier la syntaxe et ça m'a l'air correct.
    La seule chose qui me vient à l'idée, c'est que dans mon trigger je fais un select dans la table en testant le champs qui a été modifié, mais pas pour l'enregistrement modifié...

    select nvl(n_num_typ_avancement,0) into avBis from t_zee_prospection where n_num_zee = :new.n_num_zee and n_num_prospection <> :new.n_num_prospection and n_num_typ_avancement<>13;
    Bon, le code sera surement plus clair que moi :
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    CREATE OR REPLACE TRIGGER majEtatZEe
    AFTER UPDATE OF n_num_typ_avancement ON t_zee_prospection
    FOR EACH ROW
    DECLARE
    	-- etat de l'autre couple pn / zee que celui qui a ete modifie
    	avBis t_zee_prospection.n_num_typ_avancement%TYPE;
    	-- etat global de la zone
    	avZEe t_zee.n_num_typ_avancement%TYPE;
    BEGIN
    	-- recuperation des etats en base (initialisation des variables)
    	select nvl(n_num_typ_avancement,0) into avBis from t_zee_prospection where n_num_zee = :new.n_num_zee and n_num_prospection <> :new.n_num_prospection and n_num_typ_avancement<>13;
    	select n_num_typ_avancement into avZEe from t_zee where n_num_zee = :new.n_num_zee;
     
    	-- si la zone ne fait l'objet que d'un renvoi
    	IF (avBis = 0) THEN
    		IF (:new.n_num_typ_avancement = 13) THEN
    			update t_zee set t_zee.n_num_typ_avancement = 1;
    		ELSE
    			update t_zee set t_zee.n_num_typ_avancement = :new.n_num_typ_avancement;
    		END IF;
     
    	-- s'il y a eu deux envois, et donc deux couples pn / zee
    	ELSE
    		-- si le nouvel etat est "validee", la zone passe toujours a l'etat "validee"
    		IF (:new.n_num_typ_avancement = 6) THEN
    			update t_zee set t_zee.n_num_typ_avancement = 6;
    		ELSE
    			-- si la zone est a l'etat "validee", pas de changement d'etat possible
    			IF (avZEe <> 6) THEN
    				-- les seuls cas possibles de modification vers un etat 4 ou 5 sont toujours repercutes sur l'etat global de la zone
    				IF ((:new.n_num_typ_avancement = 4) OR (:new.n_num_typ_avancement = 5)) THEN
    					update t_zee set t_zee.n_num_typ_avancement = :new.n_num_typ_avancement;
    				END IF;
    				-- l'etat "TBA" sera global si la zone n'est ni "classée" ni "faite"
    				IF ((:new.n_num_typ_avancement = 9) AND (avZEe <> 4) AND (avZEe <> 5)) THEN
    					update t_zee set t_zee.n_num_typ_avancement = :new.n_num_typ_avancement;
    				END IF;
     
    				IF (:new.n_num_typ_avancement = 10) THEN
    					IF (avZEe = 10) THEN
    						update t_zee set t_zee.n_num_typ_avancement = 11;
    					ELSE
    						IF (avZEe = 12) AND (avBis = 13) THEN
    							update t_zee set t_zee.n_num_typ_avancement = 1;
    						END IF;
    					END IF;
    				END IF;
    				IF (:new.n_num_typ_avancement = 12) THEN
    					IF (avZEe = 2) THEN
    						IF (avBis <> 2) THEN
    							update t_zee set t_zee.n_num_typ_avancement = 12;
    						END IF;
    					END IF;
    				END IF;
    				IF (:new.n_num_typ_avancement = 13) THEN
    					IF (avZEe = 12) THEN
    						IF (avBis = 13) THEN
    							update t_zee set t_zee.n_num_typ_avancement = 13;
    						END IF;
    					END IF;
    				END IF;
    			END IF;
    		END IF;
    	END IF;
    END;
    L'erreur est :
    ORA-04091: table AVEDBA.T_ZEE_PROSPECTION is mutating, trigger/function may not see it
    ORA-06512: at "AVEDBA.MAJETATZEE", line 8
    ORA-04088: error during execution of trigger 'AVEDBA.MAJETATZEE'
    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java
    "La liberté de tout être s'arréte là où commence celle de l'autre... Respecter l'autre, c'est préserver sa liberté d'être, de penser et de vivre"

  2. #2
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut Re: [Debug] [Trigger] erreur d'exe pas très précise
    Citation Envoyé par viena
    Salut tout le monde,

    Voila, je code en java et pour mon appli, j'ai du faire un trigger. Je suis pas très famillière du SQL, à part quelques bases, je n'y connais pas grand chose. Mon trigger compile mais il ne veut pas s'executer. J'ai vérifier la syntaxe et ça m'a l'air correct.
    La seule chose qui me vient à l'idée, c'est que dans mon trigger je fais un select dans la table en testant le champs qui a été modifié, mais pas pour l'enregistrement modifié...
    Tu réponds à la question dans ton POST :
    ORACLE il aime pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Lecture consistante et table en mutation Dans un trigger ligne à ligne, on ne peut pas accéder en lecture à la table subissant la modification en cours(pour éviter les lectures inconsistantes). Provoque l’erreur : ORA- 04091 EMP IS MUTATING, TRIGGER MAY NOT READ OR MODIFY IT
    Signé : Capitaine Jean-Luc Picard

  3. #3
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    Bon, mon problème vient apparemment bien du select :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select nvl(n_num_typ_avancement,0) into avBis from t_zee_prospection where n_num_zee = :new.n_num_zee and n_num_prospection <> :new.n_num_prospection and n_num_typ_avancement<>13;
    Cependant, si, je ne peux pas utiliser le champs modifié pour faire une selection, existe il un autre moyen de faire ce que je veux ? un contournement quelconque ?
    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java
    "La liberté de tout être s'arréte là où commence celle de l'autre... Respecter l'autre, c'est préserver sa liberté d'être, de penser et de vivre"

  4. #4
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut
    Tu as toutes les infos ici
    Signé : Capitaine Jean-Luc Picard

  5. #5
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    Merci, c'est exactement ce qu'il me fallait.
    Ce n'était pas le même code erreur que moi alors je suis pas tombée dessus...
    Quand on sait pas où chercher...
    Désolée pour le dérangement
    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java
    "La liberté de tout être s'arréte là où commence celle de l'autre... Respecter l'autre, c'est préserver sa liberté d'être, de penser et de vivre"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] mode debug pas très performant ?
    Par thomMonteillet dans le forum MATLAB
    Réponses: 6
    Dernier message: 26/11/2012, 21h44
  2. Réponses: 11
    Dernier message: 28/11/2011, 22h23
  3. Erreur "eclipse.exe n'est pas une application win32 valide"
    Par Lolitaaa dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 18/09/2011, 14h19
  4. [TRIGGER] erreur 1442 : le trigger se déclenche mais n'agit pas.
    Par elvan49 dans le forum SQL Procédural
    Réponses: 11
    Dernier message: 14/12/2007, 11h47
  5. Message d'erreur pas très explicite-- help SVP!
    Par vonemya dans le forum C++
    Réponses: 3
    Dernier message: 28/08/2007, 14h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo