2016-04-27 11 views
0

So habe ich diesen Trigger:Fehler bei MySQL Trigger-Ausführung

CREATE TRIGGER `onUpdatePlayerTracker` AFTER UPDATE ON `playtracker` 
FOR EACH ROW UPDATE players 
SET deckplayedmost = (SELECT deckname 
        FROM playTracker 
        WHERE playerID = old.playerID 
        AND amount = (SELECT max(amount) 
            FROM playtracker 
            WHERE playerID = old.playerID 
            LIMIT 1)) 
, 

deckplayedleast =(SELECT deckname 
        FROM playTracker 
        WHERE playerID = old.playerID 
        AND amount = (SELECT min(amount) 
            FROM playtracker 
            WHERE playerID = old.playerID 
            LIMIT 1)) 

Und wenn ich versuche, playtracker

PLAYTRACKER 
PlayerID DeckName Amount 
    6  Space  1 
    4  Space  0 
    3  Space  1 
    5  Space  2 
    2  Space  1 
    1  Space  3 
    6  Sky   3 
    5  Sky   1 
    4  Sky   2 
    2  Sky   0 
    1  Sky   3 
    3  Sky   1 
    5  Ocean  3 
    4  Ocean  3 
    3  Ocean  0 
    1  Ocean  8 
    2  Ocean  4 
    6  Ocean  2 
    3  Mystic  2 
    2  Mystic  3 
    5  Mystic  2 
    6  Mystic  4 
    4  Mystic  1 
    1  Mystic  1 
    4  Forest  1 
    6  Forest  5 
    5  Forest  2 
    3  Forest  1 
    2  Forest  2 
    1  Forest  3 
    6  Desert  3 
    5  Desert  4 
    4  Desert  2 
    3  Desert  1 
    2  Desert  3 
    1  Desert  2 

zu aktualisieren, die den Trigger ausgelöst werden soll, ich erhalte eine Fehlermeldung sagen, die Das Update konnte nicht abgeschlossen werden, da das Ergebnis mehr als eine Zeile enthielt. Es gibt nicht an, woher die Mehrfachrendite kommt. Es sollte Spieler Tabelle unten aktualisieren.

Players 
PlayerID PlayerName DeckPlayedMost DeckPlayedLeast  FavCardType  
1   Daniel  Ocean   Mystic    Duel 
2   Gavin  Ocean   Mystic    Event 
3   Patrick Ocean   Mystic    Exchange 
4   Joe  Ocean   Mystic    Attack 
5   George  Ocean   Mystic    Event 
6   Robert  Ocean   Mystic    Rares 

Dieser Text ist enthalten, da mein Beitrag zu viel Code und nicht genug einer Erklärung enthält. Wie ich denke, ich habe genug Erklärung gegeben, ich weiß, es könnte besser, detaillierter und was nicht, aber ich bin neu in diesem Bereich. ehrlich gesagt bin ich immer noch überrascht, dass Leute antworten! Ich meine, ich bin dankbar, das Lernen kann eine so schwierige Herausforderung sein, ein echter Selbsttest und ich bin dankbar für alles, was ihr für eure Hilfe braucht. Macht den Stress ein wenig überschaubarer.

Antwort

1

Dies wird diesen Fehler loswerden, aber ich habe nicht gesucht, um zu sehen, ob Ihre Abfrage anders ist.

SET deckplayedmost = (SELECT deckname 
        FROM playTracker 
        WHERE playerID = old.playerID 
        AND amount = (SELECT max(amount) 
            FROM playtracker 
            WHERE playerID = old.playerID 
            LIMIT 1) 
        LIMIT 1) 
, 

deckplayedleast =(SELECT deckname 
        FROM playTracker 
        WHERE playerID = old.playerID 
        AND amount = (SELECT min(amount) 
            FROM playtracker 
            WHERE playerID = old.playerID 
            LIMIT 1) 
        LIMIT 1) 
+0

Vielen Dank. Das hat alles gut gelöst. Ich hatte auch einen anderen Fehler dort. Danke für Ihre Hilfe. – bloopiebloopie

Verwandte Themen