Triggers et mots NEW et OLD

Résolu
pcsystemd Messages postés 734 Statut Membre -  
pcsystemd Messages postés 734 Statut Membre -
Bonjour,

je dois crée un trigger qui se déclenchera lors d' INSERT OU d' UPDATE dans ma BD principale et qui va proceder aux INSERT OU UPDATE fait dans ma BD principale, dans ma seconde BD . Pour la synthase de base c'est ok :

delimiter $$

CREATE TRIGGER nom_trigger
AFTER INSERT ON ma_bd_principale
FOR EACH ROW
BEGIN
 END$$


Deux questions :

-J'ai lu la doc Mysql sur NEW et OLD mais je ne comprends pas la façon d'utiliser. Voici le paragraphe de la doc :

Cependant, dans la commande d'activation d'un déclencheur, vous pouvez faire référence aux colonnes dan la table associée au déclencheur en utilisant les mots OLD et NEW. OLD.col_name faire référence à une colonne d'une ligne existante avant sa modification ou son effacement. NEW.col_name faire référence à une colonne d'une ligne après insertion ou modification.

-Est il possible qu'un trigger se déclenche uniquement après tous les INSERT et UPDATE de la BD ou bien doit il se déclencher a chaque insert et a chaque update?

Merci pour votre aide.



--
L'accès au savoir est la première liberté que chaque homme devrait avoir.

4 réponses

  1. PRK Messages postés 799 Date d'inscription   Statut Membre Dernière intervention   117
     
    un trigger est rattaché à une table et une seule,

    cela signifie que ton trigger se declenchera a l'insert ou l'update sur une seule table que tu auras spécifié dans ton trigger.

    les directive NEW et OLD te permette d'avoir les 2 valeurs lors d'un update.

    NEW correspondant à la valeur qui a été inséré lors de l'instruction et OLD celle qui figurait dans l'enregistrement avant l'execution de l'instruction.

    Ainsi lors de ton trigger tu peut faire des comparaison de changement d'état (si OLD = false et que new = true) alors peut-être que tu as besoin de faire des modifications sur d'autres tables pour une raison quelconque.

    si tu es joueur, imagine dans un jeu ou ton personnage augmente de niveau et passe un niveau au hasard : 21 et bien peut-être qu'au niveau 21 ton personnage acquiera un nouveau sort. Eh bien, dans ce cas je pense que ton trigger peut aller modifier un enregistrement d'une autre table afin de t'autoriser l'utilisation de ce nouveau sort.

    En espérant avoir pu t'aider;
    0
  2. pcsystemd Messages postés 734 Statut Membre 23
     
    Merci pour ton explication qui m'a un peu plus éclairci l'utilisation de NEW et OLD même si cela reste encore flou quand a l'utilisation mais je continue a creuser

    Merci encore
    0
  3. pcsystemd Messages postés 734 Statut Membre 23
     
    Bon je suis un peu paumé .Voila je récapitule : J'ai deux tables table1 et table2 avec les champs suivants :

    table1
    id
    login
    pass
    mail
    
    table2
    ref_pers
    user
    passwd
    email


    Les correspondances entre les deux tables sont :
    id = ref_pers
    login = user
    pass = passwd
    mail = email


    Comment dois je m'y prendre pour que dès qu'il y a un INSERT ou un UPDATE dans la table1 le trigger se declenche et fasses les INSERT ou UPDATE dans la table2?

    Merci pour votre aide.
    0
  4. pcsystemd Messages postés 734 Statut Membre 23
     
    Merci c'est résolu.
    0