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

Requêtes MySQL Discussion :

trigger inter-base


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut trigger inter-base
    bjr,

    je réfléchi à une architecture, pour une future base.
    Je sais utiliser un trigger de base à base sur un serveur TOTO.
    Mais peut on utiliser une procédure ou autre chose pour faire l'équivalent sur des bases hébergés sur deux serveurs différents ?

    l'idée serait de faire une adaptation un truc genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    mysql> delimiter //
    mysql> create trigger insi2test2tutu_I after insert on insi for each row    begin insert into test_2.tutu (select i,t from toto.insi) ; end ;//
    Query OK, 0 rows affected (0.00 sec)
     
    mysql> delimiter ;
    en la même chose où test_2 serait un table hébergée sur une autre machine

    au pire on doit pouvoir "scripter" ce genre de chose avec un shell unix ou aure, non ?
    merci



    Bon j'ai trouvé une solution alternative qui est suffisante pour mon cas

    il s'agit de la table de type federeted et je fais le trigger qui lance un insert dessus
    sur la machine qui hébérge réellement la base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CREATE TABLE test_table ( id INT (20) NOT NULL auto_increment, name   VARCHAR(32) NOT NULL DEFAULT '',
     nom VARCHAR (32) NOT NULL default'', other  INT(20) NOT NULL DEFAULT '0', autres INT (20) NOT NULL default '0 ',  PRIMARY KEY  (id) ) 
    ENGINE=MyISAM TYPE = MyISAM;
    sur la machine qui accède à la base :
    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
     
    mysql>CREATE TABLE federated_table ( id INT (20) NOT NULL auto_increment,     name   VARCHAR(32) NOT NULL DEFAULT '',
     nom VARCHAR (32) NOT NULL default'',     other  INT(20) NOT NULL DEFAULT '0',
     autres INT (20) NOT NULL default '0 ',     PRIMARY KEY  (id) ) ENGINE=FEDERATED 
     CONNECTION='mysql://repl:LEPASSWORD@ADRESSEIP:LE_PORT/test/test_table';
    Query OK, 0 rows affected (0.01 sec)
     
    mysql> create trigger test_trigger after insert on toto for each row begin
     insert into federated_table values ('','trig','y',1,2); 
    end; //
    Query OK, 0 rows affected (0.00 sec)
     
    mysql> delimiter ;
    mysql> desc toto ;
    +-------+---------+------+-----+---------+-------+
    | Field | Type    | Null | Key | Default | Extra |
    +-------+---------+------+-----+---------+-------+
    | i     | int(11) | YES  |     | NULL    |       | 
    | t     | text    | YES  |     | NULL    |       | 
    +-------+---------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
     
    mysql> insert into toto values (1,'ZZZZ') ;
    Query OK, 1 row affected, 1 warning (0.06 sec)
     
    mysql> select * from federated_table ;
    +----+------+------+-------+--------+
    | id | name | nom  | other | autres |
    +----+------+------+-------+--------+
    |  1 | toto | titi |     1 |      1 | 
    |  2 | tutu | tata |     2 |      2 | 
    |  3 | trig | y    |     1 |      2 | 
    +----+------+------+-------+--------+
    3 rows in set (0.00 sec)
    et voilou....


    ca marchouille

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 66
    Par défaut
    Je souhaiterai utiliser le moteur FEDERATED mais a priori je ne n'arrive pas à l'activer: dans SHOW ENGINES, j'ai toujours un NO pour la colonne Support malgré que j'ai rajouté le mot 'federated' dans mon fichier de configuration.

    Comment as-tu fait?

    Merci!

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 390
    Par défaut
    salut.

    Il te faut compiler mysql avec le support du moteur .
    Selon la distribution (Centos, RHEL) installer un rpm où le support du moteur est inclu, (Debian) un .deb.

    Pour les distrib a base RH, j'utilise personnellement les excellents rpm de Rémi http://blog.famillecollet.com/

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 66
    Par défaut
    Merci pour ta réponse overider,

    Je suis en train de faire le test de la compilation mais j'avai lu dans la doc que:

    Beginning with MySQL 5.0.64, the FEDERATED storage engine is not enabled by default in the running server; to enable FEDERATED, you must start the MySQL server binary using the --federated option.
    et je suis en 5.0.77 (RHEL) c'est pour ça que cela me semble bizarre de devoir compiler.

    ----------------

    Edit: après compilation ça fonctionne sans problèmes.
    Donc soit je comprend mal la doc, soit je m'y prend mal, soit il y a un problème.

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

Discussions similaires

  1. Trigger SQL - Base SAGE
    Par Silvia12 dans le forum Développement
    Réponses: 9
    Dernier message: 13/12/2007, 09h47
  2. Problème de Trigger inter-table
    Par baptx dans le forum PL/SQL
    Réponses: 7
    Dernier message: 24/05/2007, 17h19
  3. SQL Serveur Trigger - Différente base
    Par Silvia12 dans le forum Développement
    Réponses: 2
    Dernier message: 18/04/2007, 14h34
  4. Requete inter bases
    Par groovyroe dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/02/2007, 12h55
  5. Trigger de base mais en java
    Par ericw78 dans le forum Hibernate
    Réponses: 3
    Dernier message: 13/07/2006, 20h55

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