В row
тригер имате достъп до две версии на реда, който се променя:OLD
съдържа реда такъв, какъвто беше (ако е съществувало) и NEW
съдържа реда такъв, какъвто ще бъде (ако ще съществува.)
За да накарате вашия тригер да работи, както сте описали, трябва да условите WHERE
клауза, използваща стойности от NEW
, така:
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;
Предполагам, че сте кръстили колоните си последователно между таблиците. Имайте предвид, че правилните колони в NEW
имат същите имена като колоните в CWOwnsGame
.