sql >> Base de Datos >  >> RDS >> Mysql

MySQL:desencadenar para actualizar la columna en otra tabla después de insertar donde satisface otros valores

En una row activador, tiene acceso a dos versiones de la fila que se está modificando:OLD contiene la fila como era (si existiera), y NEW contiene la fila como será (si existirá.)

Para hacer que su disparador funcione como lo describió, debe condicionar el WHERE cláusula que usa valores de NEW , así:

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;

Supuse que ha nombrado sus columnas de manera consistente entre las tablas. Tenga en cuenta que las columnas correctas en NEW tienen los mismos nombres que las columnas en CWOwnsGame .