2016-01-06 4 views
2

Je ne sais pas si c'est possible. Je développe un tournoi de golf fantasy App asr un projet. L'utilisateur choisit 6 golfeurs de six groupes, chaque groupe contient dix golfeurs. Le groupe dans lequel se trouve le golfeur est déterminé par le groupe booléen dans la table des golfeurs. La table de scores est utilisée pour enregistrer les entrées de la compétition.Créer MySQL Trigger pour mettre à jour plusieurs enregistrements dans une autre table

J'ai deux tables. Une table de golfeurs.

  CREATE TABLE golfers (
      golferid INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
      firstname VARCHAR(30) NOT NULL, 
      secondtname VARCHAR(30) NOT NULL, 
      country VARCHAR(50), 
      worldranking int(3), 
      tournamentposition int(2), 
      group1 boolean, 
      group2 boolean, 
      group3 boolean, 
      group4 boolean, 
      group5 boolean, 
      group6 boolean, 
      day1score int(2), 
      day2score int(2), 
      day3score int(2), 
      day4score int(2), 
      totalscore int(3), 
      golfscoretotal int(3) 
      ); 

Et une table de scores. Comme vu ci-dessous.

  CREATE TABLE scores (
      scoreid INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
      userid INT(11) NOT NULL, 
      golferid1 INT(6), 
      golfscoretotal1 INT(3), 
      golferid2 INT(6), 
      golfscoretotal2 INT(3), 
      golferid3 INT(6), 
      golfscoretotal3 INT(3), 
      golferid4 INT(6), 
      golfscoretotal4 INT(3), 
      golferid5 INT(6), 
      golfscoretotal5 INT(3), 
      golferid6 INT(6), 
      golfscoretotal6 INT(3), 
      totalscore INT(4), 
      FOREIGN KEY fk_userid REFERENCES users(id) 
      ); 

Est-il possible de mettre à jour les scores dans le tableau des scores (tirés de la table des golfeurs) pour chaque golfeur basé sur l'ID du golfeur dans la colonne golferid1 INT (6) avant la colonne golfscoretotal1.

+0

il est possible, mais pourquoi voudriez-vous cette table? Cela ne semble pas être un bon plan pour le moment. La seule raison possible pour laquelle vous souhaitez obtenir un tableau tel que celui-ci est si vous avez ajouté une date. Sinon, vous pouvez toujours interroger votre table de golfeurs pour afficher les résultats de la manière que vous voulez. – davejal

+0

A la réflexion même avec le jour ce serait une mauvaise idée, car avez-vous considéré que les ID des golfeurs pourraient être supprimés et autres ID créés résultant de différents ID ou plus de 6 golfeurs, que se passerait-il alors aux scores de la table? – davejal

+0

Les golfeurs ne peuvent pas être supprimés Dave. Les utilisateurs de la compétition doivent choisir dix golfeurs de 60 pour un tournoi donné. Im en utilisant le tableau des scores pour enregistrer les scores de la concurrence –

Répondre

-1

Vous pouvez utiliser quelque chose de simple comme celui-ci pour golferid1:

CREATE TRIGGER update_scores1 After INSERT ON golfers FOR EACH ROW 
     UPDATE scores 
     SET golfscoretotal1 = new.golfscoretotal 
     WHERE golferid1 = NEW.golferid 

Ensuite, pour les autres il suffit de créer plusieurs déclencheurs comme celui-ci, pour un total de 6 déclencheurs:

CREATE TRIGGER update_scores2 After INSERT ON golfers FOR EACH ROW 
     UPDATE scores 
     SET golfscoretotal2 = new.golfscoretotal 
     WHERE golferid2 = NEW.golferid 
+0

une autre option serait d'utiliser des instructions if-then, mais je ne peux pas tester cela. Vous pouvez voir [cette réponse] (http://stackoverflow.com/a/16892291/3664960) pour référence – davejal

+0

Merci Dave, je vais tester maintenant et je reviendrai à vous sous peu. J'apprécie cela. –

+0

Dave, Merci beaucoup, Cela a fonctionné un régal, j'apprécie vraiment cela. –