Partage
  • Partager sur Facebook
  • Partager sur Twitter

Création trigger sous mariaDB

    9 septembre 2020 à 14:05:53

    Bonjour

    J'essaye de créer une trigger sous mariaDB et je rencontre un soucis :

    Ma commande trigger s’inscrit bien mais elle ne fonctionne pas et pire elle me met en echec ma création d'un utilisateur :

    J'ai essayé de suivre les exemples du cours openclassroom mais rien n'y fait :/

    Merci d'avance pour votre aide au simple nocive que je suis !

    Voici le code :

    CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER trigger_xp
    AFTER INSERT ON users  FOR EACH ROW
    UPDATE user_xp SET user_xp.id_user = users.id_user;
    UPDATE user_xp SET user_xp.id_level = 1;

    -
    Edité par FrançoisBachelet 9 septembre 2020 à 14:06:59

    • Partager sur Facebook
    • Partager sur Twitter
      9 septembre 2020 à 16:44:26

      Bonjour,

      FrançoisBachelet a écrit:

      elle ne fonctionne pas et pire elle me met en echec ma création d'un utilisateur

      Une erreur précise t'est retournée ... tu aurais pu la poster ...

      Dans ton premier UPDATE, la table users n'est pas définie ... pour utiliser une valeur de la table ciblée par le TRIGGER il faut utiliser les pseudo-tables NEW et OLD (NEW dans ce cas précis).

      FrançoisBachelet a écrit:

      J'ai essayé de suivre les exemples du cours openclassroom mais rien n'y fait 

      Pourtant le cours précise bien cette notion de pseudo-table : https://openclassrooms.com/fr/courses/1959476-administrez-vos-bases-de-donnees-avec-mysql/1973090-triggers#/id/r-1990238

      Au passage, tu peux faire une seul UPDATE.

      CREATE OR REPLACE TRIGGER trigger_xp
      AFTER INSERT ON users
      FOR EACH ROW
      UPDATE user_xp
      SET
      	id_user = NEW.id_user,
      	id_level = 1;

      Là tu ne devrait plus avoir d'erreur, mais je ne suis pas convaincu que cela serve à grand chose ... Si l'utilisateur vient juste d'être créé, il paraît très peu probable (en fait impossible) qu'il existe un enregistrement dans la table user_xp avec le nouvel id ... Je pense qu'il s'agit plus ici d'un INSERT ...

      CREATE OR REPLACE TRIGGER trigger_xp
      AFTER INSERT ON users
      FOR EACH ROW
      INSERT INTO user_xp ( id_user, id_level )
      VALUES ( NEW.id_user, 1 );

      Mais je peux me tromper ...

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

      Création trigger sous mariaDB

      × 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