2016-04-02 11 views
0

Zum ersten Mal Posting satisfys, so mit mir tragen:MySQL - Trigger Spalte in einer anderen Tabelle nach Einsatz zu aktualisieren, wo es andere Werte

Ich habe haben 3 Tabellen: CWUsers, CWGamesList und CWOwnsGame.

CWUsers enthält einen Nutzernamen und aktuelle Treuepunkte, die sie durch Spiele erworben haben, die sie gekauft haben.

CWGamesList enthält den Namen des Spiels, den Konsolentyp und die Treuepunkte, die der Benutzer beim Kauf eines Spiels erhält.

CWOwnsGame ist eine Transaktionstabelle, in der der Name des Benutzers, der Name des Spiels und der Konsolentyp aufgezeichnet werden.

Probleme beim Aktualisieren der CWUsers-Tabelle mit Treuepunkten nach dem Kauf eines Spiels.

Ursprünglich hatte ich einen Trigger nach wie dies in CWOwnsGame Einfügen:

UPDATE CWUSERS SET loyaltyPoints = loyaltyPoints + 
(SELECT loyaltyPoints FROM CWGameList WHERE gameConsole = "Wii" AND gameName = "Mario") 
WHERE username = "bob" 

Obwohl funktioniert dies nur für eine Instanz, wie würden Sie es für jedes Spiel machen arbeiten, die gekauft wird.

Dank

Antwort

0

In einem row Trigger Sie Zugriff auf zwei Versionen der Reihe haben modifiziert werden: OLD die Zeile enthält, wie es wurde (wenn es existiert) und NEW die enthält rudern, wie es sein wird (wenn wird es existieren.)

Sie zu machen r Trigger-Arbeit, wie Sie beschrieben, würden Sie die WHERE Klausel Zustandswerte von NEW, mit etwa so:

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; 

Ich bin davon ausgegangen, dass Sie Ihre Spalten konsistent zwischen Tabellen benannt haben. Beachten Sie, dass die korrekten Spalten in NEW die gleichen Namen wie die Spalten in CWOwnsGame haben.

+0

Vielen Dank für die Antwort! Ich werde es versuchen :) –

+0

Hmm, bekomme einen Fehler, wenn ich das versuche. "Unknown column" gameConsole 'in NEW. –

+0

Das wäre die passende Spalte von 'CWOwnsGame'. Ich habe nur die Spaltennamen erraten. –

Verwandte Themen