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

PL/SQL Oracle Discussion :

Trigger : sauvegarder les lignes d'une table dans un fichier texte après une mise à jour


Sujet :

PL/SQL Oracle

  1. #1
    Membre habitué
    Profil pro
    Chef d’entreprise
    Inscrit en
    Mars 2002
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef d’entreprise

    Informations forums :
    Inscription : Mars 2002
    Messages : 212
    Points : 149
    Points
    149
    Par défaut Trigger : sauvegarder les lignes d'une table dans un fichier texte après une mise à jour
    J'ai écrit un trigger qui suite à une modif devrait enregistrer toutes les lignes d'une table dans un fichier texte.
    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
     create or replace trigger trig_cli
       after update of nom on client for each row 
     
    	 declare 
     
    	 v_filehandle utl_file.file_type;
    cursor cli Is
            select * from client;
    	 begin
     
             v_filehandle :=utl_file.fopen('MY_DOCS','j2ee.txt','w');--Opening a file
     
             for v_cli_rec IN cli LOOP
     
                utl_file.putf(v_filehandle,'clients %s : %s\n',v_cli_rec.nom,v_cli_rec.prenom);                    
             end loop;
     
            UTL_FILE.fclose(v_filehandle);
     
         end trig_cli;
    Le trigger est crée correctement.
    Quand, je fais une maj de la table j'obtiens l'erreur suivante :

    ORA-04091: la table MYDB.CLIENT est en mutation ; le déclencheur ou la fonction ne peut la voir
    ORA-06512: à "MYDB.TRIG_CLI", ligne 5
    ORA-06512: à "MYDB.TRIG_CLI", ligne 12
    ORA-04088: erreur lors d'exécution du déclencheur 'MYDB.TRIG_CLI'

    Y'a-t-il un moyen de corriger cette erreur ou d'exporter la table autrement pour éviter le problème de table en mutation?

    Merci

  2. #2
    Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Janvier 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2014
    Messages : 28
    Points : 47
    Points
    47
    Par défaut
    Il faut supprimer
    Pour avoir accès à toute la table.

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Avec un trigger for each row, il faut utiliser :old et :new pour accéder aux lignes en cours de modification.

    Par contre il faut les logguer dans une table ou alors passer par un job, car écrire dans un fichier n'est pas transactionnel.
    Un rollback ne supprimera pas l'écriture dans le fichier, de plus il y a le phénomène de restart pour les triggers :
    http://asktom.oracle.com/pls/apex/f?...05800346120218
    do nothing that doesn't rollback in them - ever - unless you can live with the side effects (triggers can always fire more than once!)

Discussions similaires

  1. sauvegarder les données d'un tableau dans un fichier texte
    Par soumer dans le forum Interfaces Graphiques
    Réponses: 16
    Dernier message: 18/09/2011, 20h13
  2. [TPW] Ajout d'une ligne dans un fichier texte après une position saisie
    Par Invité dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 19/12/2010, 12h27
  3. Réponses: 3
    Dernier message: 04/06/2010, 23h57
  4. Enregistrer les données d'une table dans un fichier texte word ou excel
    Par maamar1979 dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 14/06/2006, 14h41
  5. Delphi7 - Export d'une table dans un fichier texte
    Par jer64 dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/06/2006, 01h33

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