Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL - Trigger para atualizar Column em outra tabela após inserir onde satisfaz outros valores


Em uma row acionador, você tem acesso a duas versões da linha que está sendo modificada:OLD contém a linha como era (se existir) e NEW contém a linha como será (se ele existirá.)

Para fazer seu acionador funcionar como você descreveu, você deve condicionar o WHERE cláusula usando valores de NEW , igual a:
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;

Eu assumi que você nomeou suas colunas de forma consistente entre as tabelas. Observe que as colunas corretas em NEW têm os mesmos nomes das colunas em CWOwnsGame .