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éation dynamique de triggers


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 53
    Par défaut création dynamique de triggers
    Bonjour à tous,

    Je cherche à avoir un script de création de trigger dynamique de façon à pouvoir le passer sur plusieurs tables en ne changeant que le nom de table. J'avais prévu de faire une procédure de création de trigger avec le nom de table en paramètre, puis d'appeler cette procédure dans une boucle qui parcourt toutes les tables auxquelles je veux ajouter le trigger; cela aurait donné quelque chose comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    create procedure Add_Trigger (in table_nom varchar(20))
    begin
    # prépération de la requete de création du trigger
    set @trigger_creation = concat("create trigger set_date_modification_",table_nom," 
    before update on ",table_nom,"
    for each row set new.date_modification = now()");
    # execution de la requete
    prepare stmt_create from @trigger_creation; 
    execute stmt_create; deallocate prepare stmt_create;
    end
    puis dans une autre routine je l'aurai appelée:

    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
     
    create procedure Add_trigger_on_all (in schema_nom varchar(20))
    begin
    declare done int default 0; #variable pour la boucle
    declare table_nom varchar(50); # variable pour les noms de tables parcourues
     
    declare cursor_tables cursor for #curseurr de parcours des tables
    select distinct table_name from information_schema.tables
    where table_schema like schema_nom;
     
    #handler pour le curseur
    declare continue handler for sqlstate '02000' set done = 1;
     
    #boucle grâce au curseur:
    open cursor_tables;
    repeat
       fetch cursor_tables into table_nom
       #appel de la routine de création du trigger:
       if not done then call Add_Trigger(table_nom); end if; 
    until done end repeat;
    close cursor_tables;
     
    end;
    Malheureusement il est indiqué dans la doc mysql qu'une routine ne peut pas contenir de create trigger!!
    Est-ce que quelqu'un sait comment je pourrais scripter ma création de trigger en masse d'une autre manière?

    Merci beaucoup, Thomas

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 67
    Par défaut
    A ta place, j'utiliserais un script dans un langage tiers (PHP par exemple) pour générer les requêtes de création de trigger.

    Ce sera d'ailleurs peut-être plus facile à écrire qu'une procédure stockée.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Par défaut
    salut sky !!

    Ma solution pourrait peut être t'aider ! Elle se trouve ici :

    http://www.developpez.net/forums/d11...ger-generique/

    J’espère qu'elle te sera assez explicite !! A ++

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/09/2011, 19h35
  2. [D7] Création dynamique de Form
    Par jer64 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 03/08/2003, 12h20
  3. [Rave Report] problème de création dynamique
    Par Nivux dans le forum Rave
    Réponses: 2
    Dernier message: 24/05/2003, 00h07
  4. TWebBrowser et création dynamique
    Par BakaOnigiri dans le forum Web & réseau
    Réponses: 2
    Dernier message: 01/09/2002, 10h53
  5. Création dynamique de TImages
    Par Dric dans le forum C++Builder
    Réponses: 10
    Dernier message: 08/07/2002, 12h36

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