sql >> Database teknologi >  >> RDS >> Mysql

MySQL - Trigger for at opdatere kolonne i en anden tabel efter indsættelse, hvor den opfylder andre værdier

I en row trigger du har adgang til to versioner af rækken, der ændres:OLD indeholder rækken, som den var (hvis den eksisterede) og NEW indeholder rækken, som den vil være (hvis det vil eksistere.)

For at få din trigger til at fungere som du beskrev, ville du betinge WHERE klausul ved hjælp af værdier fra NEW , sådan:

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;

Jeg har antaget, at du har navngivet dine kolonner konsekvent mellem tabellerne. Bemærk, at de korrekte kolonner i NEW har de samme navne som kolonnerne i CWOwnsGame .




  1. sql-triggere Jeg har fejl under lagring af kolonnenavn i variabel og bruger det til OLD.myvar i sql-triggere

  2. ASP.NET MVC 4, flere modeller i én visning?

  3. Rækkeversionering i MySQL

  4. PHP - MySQL-forespørgsel med sideinddeling