📋 表概述

auctionhouse 表存储所有在拍卖行挂单的物品信息,包括卖家、物品GUID、起拍价、一口价、保证金、当前竞价等完整交易信息。这是魔兽经济系统的核心交易表之一。

主键为 id,同时有唯一索引 item_guid 确保每件物品只能挂单一次。houseid 区分联盟(2)/部落(6)/中立(7)拍卖行。

📊 表结构

字段名类型默认值说明
idint UNSIGNED0拍卖单号(主键)
houseidtinyint UNSIGNED7拍卖行ID(2=联盟,6=部落,7=中立)
itemguidint UNSIGNED0拍卖物品GUID(唯一索引→item_instance.guid)
itemownerint UNSIGNED0卖家角色GUID
buyoutpriceint UNSIGNED0一口价(铜币单位)
timeint UNSIGNED0拍卖到期时间(Unix时间戳)
buyguidint UNSIGNED0当前竞价者GUID(0=无人竞价)
lastbidint UNSIGNED0当前最高竞价(铜币单位)
startbidint UNSIGNED0起拍价(铜币单位)
depositint UNSIGNED0挂单保证金(铜币单位)

🔍 重要字段详解

🏛️ houseid - 拍卖行分区

详细说明:区分不同阵营/地区的拍卖行。
  • 2 = 联盟拍卖行(铁炉堡、暴风城等)
  • 6 = 部落拍卖行(奥格瑞玛、幽暗城等)
  • 7 = 中立拍卖行(加基森、藏宝海湾)
  • 默认值为7(中立),需确保正确设置

💰 buyoutprice / startbid / lastbid

详细说明:三个价格字段,全部以铜币为单位。
  • startbid - 起拍价,竞价不能低于此值
  • buyoutprice - 一口价,买家可以直接购买的价格(0=不支持一口价)
  • lastbid - 当前最高竞价(0=尚未有人出价)
  • buyoutprice=0 表示该物品仅支持竞拍模式

⏰ time - 拍卖到期

详细说明:Unix时间戳,拍卖到期后物品归还卖家。
  • 通常为12/24/48小时(可配置)
  • 到期后如果有人竞拍,物品归竞价者
  • 无人竞拍则退还给卖家

💡 SQL示例

示例1:查询联盟拍卖行当前在售物品

SELECT ah.id, ah.itemguid, ah.startbid / 10000 AS bid_gold, ah.buyoutprice / 10000 AS buyout_gold, FROM_UNIXTIME(ah.time) AS expire_time FROM auctionhouse ah WHERE ah.houseid = 2 ORDER BY ah.time;

示例2:查询即将到期的拍卖(1小时内)

SELECT id, itemguid, houseid, buyoutprice / 10000 AS gold, FROM_UNIXTIME(time) AS expire_time FROM auctionhouse WHERE time < UNIX_TIMESTAMP() + 3600 AND time > UNIX_TIMESTAMP() ORDER BY time;

❓ 常见问题

Q1: 为什么物品无法在拍卖行出售?
检查 itemguid 是否已被唯一索引占用(一件物品不能同时在多个拍卖出现)。检查拍卖行是否属于正确阵营(houseid)。
Q2: 保证金(deposit)如何计算?
由服务器根据物品的售价和拍卖时长自动计算(通常为一口价的百分比)。挂单成功时不退还,拍卖成交后退还。