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

MySQL - Attiva l'aggiornamento della colonna in un'altra tabella dopo l'inserimento in cui soddisfa altri valori

In una row trigger hai accesso a due versioni della riga in fase di modifica:OLD contiene la riga come era (se esisteva) e NEW contiene la riga come sarà (se esisterà.)

Per far funzionare il tuo trigger come hai descritto, devi condizionare il WHERE clausola che utilizza valori da NEW , in questo modo:

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;

Ho presupposto che tu abbia nominato le tue colonne in modo coerente tra le tabelle. Tieni presente che le colonne corrette in NEW hanno gli stessi nomi delle colonne in CWOwnsGame .