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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 51
    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 expérimenté Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    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
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    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
    Membre averti
    Inscrit en
    Février 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 51
    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
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

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

  6. #6
    Membre expérimenté Avatar de DAB.cz
    Inscrit en
    Octobre 2006
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 221
    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
    Membre averti
    Inscrit en
    Février 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 51
    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