Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL - Déclencheur pour mettre à jour la colonne dans une autre table après l'insertion là où elle satisfait d'autres valeurs

Dans une row trigger vous avez accès à deux versions de la ligne en cours de modification :OLD contient la ligne telle qu'elle était (s'il existait) et NEW contient la ligne telle qu'elle sera (si il existera.)

Pour que votre déclencheur fonctionne comme vous l'avez décrit, vous devez conditionner le WHERE clause utilisant des valeurs de NEW , comme ceci :

CREATE TRIGGER update_loyalty_points
  AFTER INSERT ON CWUserOwnsGame
  FOR EACH ROW
    UPDATE CWUsers
      SET loyaltyPoints = loyaltyPoints +
        (SELECT loyaltyPoints
          FROM CWGameList
          WHERE gameConsole = NEW.cName
            AND gameName = NEW.gName)
      WHERE username = NEW.uName;

J'ai supposé que vous avez nommé vos colonnes de manière cohérente entre les tables. Notez que les colonnes correctes dans NEW ont les mêmes noms que les colonnes dans CWOwnsGame .