mail_server_template_items - 邮件模板物品附件配置
基于 AzerothCore Characters 数据库 · 服务端邮件物品附件配置表
📋 表概述
mail_server_template_items 表配置了服务端邮件模板附带的物品奖励。每行定义一件物品及其数量,并可按阵营分别配置不同物品。与 mail_server_template 表关联,实现邮件附带装备、消耗品等奖励物品。
- 分阵营物品配置
- 物品ID+数量
- 单模板多物品
- 外键级联管理
主键为 id(自增)。通过外键
fk_mail_template 关联 mail_server_template 表。faction 字段支持联盟/部落不同的物品配置。📊 表结构
| 字段名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| id | int UNSIGNED | AUTO_INCREMENT | 记录唯一ID(主键,自增) |
| templateID | int UNSIGNED | NOT NULL | 关联的邮件模板ID(外键→mail_server_template.id) |
| faction | enum | NOT NULL | 阵营限制(Alliance/Horde) |
| item | int UNSIGNED | NOT NULL | 物品ID(对应item_template.entry) |
| itemCount | int UNSIGNED | NOT NULL | 物品数量 |
🔍 重要字段详解
🚩 faction - 阵营区分
详细说明:ENUM枚举类型,决定物品奖励的阵营适用范围。
- Alliance - 仅联盟玩家获得此物品
- Horde - 仅部落玩家获得此物品
- 常用设计:联盟和部落各给一件阵营专属坐骑或装备
- 如果两阵营物品相同,需要插入两条记录(分别标记Alliance和Horde)
💡 典型用法:联盟获得战马缰绳(item=2411)、部落获得亡灵战马缰绳(item=13331),各6只。
📦 item / itemCount - 物品与数量
详细说明:定义附带的物品ID和数量。
- item - 物品模板ID,对应 world 库的 item_template.entry
- itemCount - 物品数量(堆叠数量),如 itemCount=6 表示6个
- 一个模板可以有多个物品(多条记录),全部附带在同一封邮件中
- item 超出堆叠上限时自动分多组
🔗 与模板关联
详细说明:通过 templateID 外键与 mail_server_template.id 关联。
- 级联删除(CASCADE):删除模板时自动删除关联的物品记录
- 一个模板可以有0条或多条物品记录
- 物品 + 金币 (moneyA/moneyH) 可同时在同一封邮件中发送
💡 SQL示例
示例1:为模板配置联盟/部落不同物品
-- 模板ID=1:联盟6个背包(item=4500),部落6个背包(item=3914)
INSERT INTO mail_server_template_items
(templateID, faction, item, itemCount)
VALUES
(1, 'Alliance', 4500, 6),
(1, 'Horde', 3914, 6);示例2:查询某模板所有附属物品
SELECT
t.subject AS template_name,
i.faction,
i.item,
i.itemCount
FROM mail_server_template_items i
JOIN mail_server_template t ON t.id = i.templateID
WHERE i.templateID = 1
ORDER BY i.faction, i.id;示例3:批量修改某模板物品数量
-- 将模板ID=1的所有物品数量加倍
UPDATE mail_server_template_items
SET itemCount = itemCount * 2
WHERE templateID = 1;❓ 常见问题
Q1: 如果物品ID不存在会怎样?
服务端会尝试创建物品但失败,可能导致邮件发送异常。务必确保 item 字段的值是在 world 库 item_template 中存在的有效物品ID。
Q2: 一个模板最多可以配置多少件物品?
理论上无上限(受INT主键范围限制)。但每封邮件有物品槽位限制(最多12个附件槽),超出部分会被忽略。