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 Procédural MySQL Discussion :

créer fichier avec un Trigger


Sujet :

SQL Procédural MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 26
    Points : 20
    Points
    20
    Par défaut créer fichier avec un Trigger
    Bonjour,

    Je voudrais savoir si il est possible de créer un fichier avec un trigger ... je m'explique.
    En fait le but de ceci est que, lorsque qu'il y a une modification de faite sur une base, le trigger le detecte est crée automatiquement un fichier qui contiendrais les modification effectués afin de pouvoir y injecter dans une autre base.

    Je sais pas du tout si c'est possible =(

    Merci de vos réponses

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 26
    Points : 20
    Points
    20
    Par défaut autre solution
    bonjour,

    je cherche toujours une solution à mon problème =)
    J'ai pensé faire un dump de la table lorsque celle-ci est modifiée.
    Je ne trouve rien qui indique si on peut faire un dump à partir d'un trigger
    par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE TRIGGER test AFTER INSERT ON test
    FOR EACH ROW
    mysqldump -h 127.0.0.1 -u user -p pass test > test.sql
    Biensur sa ne marche pas =)

    J'ai pensé aussi faire le dump dans une function et l'appeler avec le trigger.
    Si quelqu'un à une solution.
    Pour l'instant j'ai fait ce trigger :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    create trigger test
    after update on test
    for each row
    SELECT * FROM test INTO OUTFILE 'D:\test.txt';
    Sa fonctionne seulement moi je veut récuperer les requêtes qui ont été effectuées.

    Je voulais aussi savoir si il est possible de mettre plusieurs actions pour le trigger, c'est à dire quelque chose comme sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TRIGGER test AFTER INSERT,DELETE,UPDATE ON test ....
    Merci de vos réponse.

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Il me semble que tu essaies de réinventer la roue, ou plus exactement la réplication http://dev.mysql.com/doc/refman/5.0/fr/replication.html.
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 26
    Points : 20
    Points
    20
    Par défaut =)
    Oui j'avais regardé avec la réplication mais seulement sa ne dépend pas de moi.
    En fait j'ai 2 base (1 locale et 1 sur serveur distant), le but c'est que quand la base locale est mise à jour sa met à jour la base distante (donc la réplication était toute indiquée), mais mon patron veut que je fasse sa avec les trigger et des petits prog en delphi.
    En gros, avec un trigger quand une modif est faite récuperer ce qui à été rajouté.
    Un prog delphi en local qui detecte le nouveau fichier et qui l'envoi par ftp sur le serveur distant.
    Un prog en delphi qui écoute et quand un fichier est arrivé, l'insert dans la base deistante et archive le fichier.

    Voilà, il faut que je me débrouille avec sa =) et je galère un peu.

    Maintenant si c'est pas possible avec les trigger, ben faudra que ja fasse autrement.

  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    C'est toujours possible, simplement il va falloir que tu fasses tout toi-même, en particulier réécrire l'UPDATE à partir de la pseudo-table new.

    Perso, je te conseillerais plutôt que créer des colonnes "date de dernière modif", soit en TIMESTAMP ON UPDATE CURRENT TIMESTAMP, soit alimentées par un trigger. ça te permet ensuite de faire un SELECT INTO OUTFILE sur les données modifiées depuis la dernière exportation, et de les re-charger dans ton autre base avec LOAD DATA INFILE.
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 26
    Points : 20
    Points
    20
    Par défaut =)
    Merci antoun !
    Ta solution me semble la plus adaptée =) je n'avais pas pensé à sa.
    Merci beaucoup.
    PLus qu'a mettre tout sa en place moi =)

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Attention, ce système peut poser problème si des données sont ajoutées ou modifiées PENDANT l'export. Les deux solutions classiques sont :
    • Fermer l'accès à la base le temps de faire l'export
    • Enregistrer la date-heure courante en début de processus et ne rien exporter qui soit postérieur (ces données-là feront partie du prochain export).
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

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

Discussions similaires

  1. AWK : créer fichier avec un nom de variable
    Par DIE dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 27/08/2009, 08h18
  2. créer fichier avec un nom de fichier
    Par shirya dans le forum C++
    Réponses: 1
    Dernier message: 01/06/2008, 23h44
  3. Batch, créer un fichier avec l'heure actuelle
    Par crosse9 dans le forum Windows
    Réponses: 1
    Dernier message: 19/12/2006, 09h40
  4. [php] Créer un fichier avec fopen
    Par fadeninev dans le forum Langage
    Réponses: 2
    Dernier message: 13/06/2006, 16h50
  5. Réponses: 5
    Dernier message: 01/03/2006, 11h14

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