Partage
  • Partager sur Facebook
  • Partager sur Twitter

[MySQL] MàJ auto d'un champ après un certain temps

    14 novembre 2010 à 17:01:36

    Bonjour,

    Dans une table, j'ai un champ contenant un timestamp renseigné avec la fonction NOW() au moment de l'INSERT ou d'un UPDATE.
    Dans la même table j'ai un autre champ de type INT et je voudrais que ce champ s'incrémente en fonction du temps écoulé depuis le timestamp contenu dans le premier champ.

    Exemple: mon timestamp est mis à jour, mon autre champ contient la valeur '0'. 2 heures après la mise à jour de mon timestamp je voudrais que mon autre champ prenne la valeur '1', 4 heures après il prend la valeur '2' ...

    Est-ce possible? Je ne pense pas pouvoir utiliser un trigger dans ce cas puisqu'il n'y a pas d'événement "déclencheur".

    Y'aurait-il une autre méthode?

    Merci d'avance pour vos réponses.
    • Partager sur Facebook
    • Partager sur Twitter
    There must be some way outa here.
      14 novembre 2010 à 17:06:18

      L'événement déclencheur, c'est pas justement l'INSERT ou l'UPDATE ?

      P.S. On dit colonne, pas champ.
      • Partager sur Facebook
      • Partager sur Twitter
        14 novembre 2010 à 17:10:14

        Si, l'événement déclencheur c'est en quelque sorte la MàJ du timestamp, mais il me semble qu'un trigger se déclenche immédiatement après cet événement, ce qui n'est pas le cas dans ce que je veux faire.

        Est-ce possible de déclencher un trigger toutes les 2h après l'événement déclencheur?

        Et si oui, que se passe-t-il si un nouvel événement déclencheur se produit?
        • Partager sur Facebook
        • Partager sur Twitter
        There must be some way outa here.
          15 novembre 2010 à 1:18:20

          bonjour oui c'est possible, je vais essayer de te donner un petit exemple, déja tu enregistrer le time stamp de ta premiere action et cac 'est bien car on va s'en servir, donc en gros tu doit fair une structure conditionnel etant donner que ta valeur sera parfois a 1 parfois a 2 parfois a 7 bref

          Citation : code


          $Modif_Ago = $TempsEnregistré - time() ;
          if (($MaValeur == 1) AND ($Modif_Ago> 7200)) {
          mon code a executer
          }
          elseif (($MaValeur == 2) AND ($Modif_Ago> 14400)){
          mon code a executer
          }


          bon c'est just un exemple sommaire j'ai fait ça l'arrache mais le principale c'est que tu comprenne ce que je veux dire, tu doit détéerminer le temps écouler entre le moment de l'enregistrement et le moment "actuel" et si cette valeur est supérieur au temps définit et a la valeur de ton champs c'est gagné, ne recopie pas mon code c'est juste un exemple hein ;)

          voila
          • Partager sur Facebook
          • Partager sur Twitter
            15 novembre 2010 à 8:41:22

            Ouais, sauf que si personne visite ta page, ton script s'exécutera pas. En fait, ce qu'il veut faire m'a l'air de beaucoup plus se rapprocher d'un cron.
            • Partager sur Facebook
            • Partager sur Twitter
              17 novembre 2010 à 23:13:57

              Merci, je vais regarder ce qu'est un cron, jamais entendu parler. ^^
              • Partager sur Facebook
              • Partager sur Twitter
              There must be some way outa here.

              [MySQL] MàJ auto d'un champ après un certain temps

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown