petition_sign 请愿书签名表
基于 AzerothCore 官方数据库 · Characters 库 · 存储请愿书上的玩家签名
表概述
petition_sign 表存储请愿书上的签名信息。每个签名记录签名者、所属账号、以及签名的请愿书和发起人。
核心概念:创建公会或竞技场队伍需要收集签名。此表记录哪些玩家在哪些请愿书上签了名。每个玩家只能在一张请愿书上签名。
表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| ownerguid | INT UNSIGNED | NOT NULL | 发起人GUID → petition.ownerguid |
| petitionguid | INT UNSIGNED | 0 | 请愿书物品GUID → petition.petitionguid |
| playerguid | INT UNSIGNED | 0 | 签名者GUID → characters.guid |
| player_account | INT UNSIGNED | 0 | 签名者账号ID → account.id |
| type | TINYINT UNSIGNED | 0 | 请愿类型(0=公会 2/3/5=竞技场) |
重要字段详解
playerguid / player_account
详细说明:同时记录签名者的角色GUID和账号ID。
- playerguid:谁签了名
- player_account:签名者所属账号(防止同账号多角色重复签名)
- 通常一个账号只能在一个请愿书上签一次
petitionguid + playerguid - 联合主键
详细说明:确保同一请愿书上同一玩家只能签名一次。
- 最多收集5个签名(含发起人)
- 签名达到要求数后即可提交创建公会
SQL示例:查看请愿书签名 →
SELECT ps.*, c.name FROM petition_sign ps JOIN characters c ON ps.playerguid=c.guid WHERE ps.petitionguid=请愿书GUID;SQL查询示例
-- 查看某请愿书收集了多少签名
SELECT COUNT(*) AS sign_count
FROM petition_sign
WHERE ownerguid = 发起人GUID AND type = 0;-- 查看某玩家签了哪些请愿书
SELECT p.petitionguid, p.ownerguid, pe.name AS guild_name
FROM petition_sign p
JOIN petition pe ON p.ownerguid = pe.ownerguid AND p.type = pe.type
WHERE p.playerguid = 角色GUID;常见问题
Q: 签名有数量限制吗?
每个请愿书需要指定数量的签名(默认4个其他玩家签名),由 MinPetitionSigns 配置控制。一个玩家只能在一张同类请愿书上签名。
Q: 签名者退出了游戏,签名还有效吗?
签名与角色是否在线无关。一旦签名完成记录在表中,即使签名者离线也有效。创建公会时不需要签名者同时在线。