表概述

guild_bank_eventlog 表记录公会银行的所有操作日志,包括存款、取款、移动物品等。用于审计和追溯。

核心概念:每次公会银行的物品存取操作都会生成一条日志记录,包含操作者、物品、时间、目标标签页等信息。

表结构

字段名数据类型默认值说明
guildidINT UNSIGNED0公会ID → guild.guildid
LogGuidINT UNSIGNED0日志记录ID(辅助列)
TabIdTINYINT UNSIGNED0操作的标签页ID
EventTypeTINYINT UNSIGNED0事件类型
PlayerGuidINT UNSIGNED0操作玩家GUID
ItemOrMoneyINT UNSIGNED0物品ID或金额
ItemStackCountSMALLINT UNSIGNED0物品堆叠数量
DestTabIdTINYINT UNSIGNED0目标标签页ID(移动物品时使用)
TimeStampINT UNSIGNED0操作时间(Unix时间戳)

重要字段详解

EventType - 事件类型

详细说明:标识操作的类型。常见类型
  • 1:存入物品
  • 2:取出物品
  • 3:移动物品到其他标签页
  • 4:存入金币
  • 5:取出金币
  • 6:购买新的银行标签页

ItemOrMoney / ItemStackCount

详细说明:记录操作的具体数据。
  • 物品操作时:ItemOrMoney = 物品ID,ItemStackCount = 数量
  • 金币操作时:ItemOrMoney = 金币金额(铜币)
SQL示例:查看公会银行最近操作 → SELECT * FROM guild_bank_eventlog WHERE guildid=1 ORDER BY TimeStamp DESC LIMIT 50;

SQL查询示例

-- 查看某成员的所有银行操作记录 SELECT EventType, TabId, ItemOrMoney, ItemStackCount, FROM_UNIXTIME(TimeStamp) AS event_time FROM guild_bank_eventlog WHERE guildid = 1 AND PlayerGuid = 角色GUID ORDER BY TimeStamp DESC;
-- 统计某标签页的存取物品总数 SELECT CASE EventType WHEN 1 THEN '存入' WHEN 2 THEN '取出' END AS action, COUNT(*) AS count FROM guild_bank_eventlog WHERE guildid = 1 AND TabId = 0 GROUP BY EventType;

常见问题

Q: 日志会一直保留吗?

日志通常有上限(如最近100条或按时间清理)。建议定期备份或归档重要日志数据。

Q: 如何查看谁取走了某物品?

SELECT PlayerGuid, TimeStamp FROM guild_bank_eventlog WHERE guildid=1 AND ItemOrMoney=物品ID AND EventType=2 ORDER BY TimeStamp DESC;