【问题标题】:Can't update table in stored function/trigger无法更新存储函数/触发器中的表
【发布时间】:2016-06-09 19:27:36
【问题描述】:

如果玩家 ID 中不存在 ownerid,我尝试运行此查询以删除公会中的一行。

DELETE FROM guilds WHERE ownerid NOT IN (SELECT id FROM players);

但我收到此错误: 无法更新存储函数/触发器中的表“玩家”,因为它已被调用此存储函数/触发器的语句使用。

我也尝试了NOT EXISTSLEFT JOIN,但我得到了相同的结果。

在这种情况下我该怎么办?提前致谢。

【问题讨论】:

  • 您是否尝试在触发器中运行此代码?或者你有公会的触发器?您必须发布公会的触发代码,生成该错误的代码就在那里。
  • 我意识到使用 SELECT 可以完美运行。所以我必须手动删除所有没有ownerid的公会,这不是太多的工作,无论如何感谢你的帮助。

标签: mysql phpmyadmin


【解决方案1】:

您的查询还删除了players 表,实际上删除了所有内容。由于players 表以某种方式受到保护,因此您会收到该错误,您无需触摸它,试试这个;

DELETE FROM guilds WHERE ownerid != ALL(SELECT id FROM players);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 2017-05-23
    • 2019-08-05
    • 2016-01-21
    • 2019-05-20
    • 1970-01-01
    相关资源
    最近更新 更多