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

SQL Oracle Discussion :

transaction autonome active dÚtectÚe et annulÚe


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 51
    Points : 26
    Points
    26
    Par défaut transaction autonome active dÚtectÚe et annulÚe
    Bonsoir
    voila ma fonction avec laquelle je remplie une table que je vaus utiliser par la suite dans un trigger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR REPLACE function remplir_table(id_p VARCHAR2)
    return varchar2 
    IS
    PRAGMA AUTONOMOUS_TRANSACTION;
    ok varchar(20):='ok';
    BEGIN
    insert into copie select * from personnes  where id_personne = id_p;
    return ok;
    END;
    a l'execution , ca genere une erreur du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ORA-06519: transaction autonome active dÚtectÚe et annulÚe
    ORA-06512: Ó "UNICAMPUSFLAM.REMPLIR_TABLE", ligne 9
    je sais plus quoi faire , et sans pragma ca crée des prob lors de l'execution du trigger
    voila le trigger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE OR REPLACE TRIGGER trigger_photo AFTER UPDATE OR INSERT ON PERSONNES
    FOR EACH ROW
    DECLARE 
    res varchar(20);
    BEGIN
     
     
     res:= remplir_table (:new.id_personne);
    update personnes@exportsynchrone set stockage_photo = ( select stockage_photo from copie where id_personne = :new.id_personne) where id_personne = :new.id_personne;
    END ;

  2. #2
    Membre actif Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Points : 249
    Points
    249
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE OR REPLACE FUNCTION remplir_table(id_p VARCHAR2)
    RETURN varchar2 
    IS
    PRAGMA AUTONOMOUS_TRANSACTION;
    ok varchar(20):='ok';
    BEGIN
    INSERT INTO copie SELECT * FROM personnes  WHERE id_personne = id_p;
    COMMIT;
    RETURN ok;
    END;
    DAB

  3. #3
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    mais ATTENTION en cas d'erreur du trigger ou de rollback de la transaction qui déclenche le trigger, l'insert sera quand même validé

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 51
    Points : 26
    Points
    26
    Par défaut
    lorsque j'ai fait commit , mnt c'est le trigger qui déconne voila l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ORA-02055: Úchec d'opÚration de mise Ó jour distribuÚe ; annulation requise
    ORA-01427: sous-interrogation ramenant un enregistrement de plus d'une ligne

  5. #5
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    stockage_photo ne serait pas un BLOB par hasard...

  6. #6
    Membre actif Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    Points : 249
    Points
    249
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT stockage_photo FROM copie WHERE id_personne = :new.id_personne
    Ca ne doit ramener q'une ligne!!!

    La solution totale est très bizarre. AUTONOMOUS_TRANSACTION n'est pas convenable ici, je pense.

    DAB

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 51
    Points : 26
    Points
    26
    Par défaut
    ca y est , ca marche
    merci orafrance
    enfin j'ai à contourner le prob du transfert des blob via datalink

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

Discussions similaires

  1. Transaction already active mais Entitymanager closed
    Par piotrr dans le forum Hibernate
    Réponses: 2
    Dernier message: 13/05/2008, 17h57
  2. transaction distribuée et transaction autonome
    Par eabitbol33 dans le forum SQL
    Réponses: 5
    Dernier message: 22/08/2007, 17h14
  3. Réponses: 13
    Dernier message: 21/08/2007, 10h32
  4. Transaction autonomes pour une appli web en .NET
    Par lex0072 dans le forum Oracle
    Réponses: 11
    Dernier message: 08/07/2005, 15h36
  5. [Transaction autonome][PRIVILEGES]
    Par PpPool dans le forum Administration
    Réponses: 5
    Dernier message: 10/09/2003, 15h17

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