首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL触发器执行中的错误

MySQL触发器执行中的错误
EN

Stack Overflow用户
提问于 2016-04-27 22:18:20
回答 1查看 33关注 0票数 0

所以我有个扳机

代码语言:javascript
复制
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))

当我试图更新播放跟踪器时

代码语言:javascript
复制
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

这应该触发触发器,我得到一个错误,说更新不能完成,因为结果包含超过一行。它没有指定多个返回来自何处。它应该更新下面的球员表。

代码语言:javascript
复制
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

这篇文章包含了我的文章,因为我的文章包含了太多的代码,没有足够的解释。就像我想我已经提供了足够的解释,我知道它可以更好,更详细,什么不是,但我是新手。坦率地说,我仍然惊讶于人们的回答!我的意思是我很感激,学习可能是一项艰巨的挑战,是对自我的一次真正的考验,我感谢你们的帮助。让这一切的压力更容易控制。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-28 01:32:22

这将消除该错误,但我没有查看您的查询是否正确,否则。

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36901939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档