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
.