在Discuz!系统中,要批量删除指定版块的帖子,需要同时处理多个关联数据表。以下是基于Discuz! X3数据结构的标准SQL操作方案(请务必备份数据库后执行):
1. **核心操作命令**(替换[板块ID]为实际数字):
- DELETE t,p,tm FROM
- pre_forum_thread t
- LEFT JOIN pre_forum_post p ON t.tid=p.tid
- LEFT JOIN pre_forum_threadmod tm ON t.tid=tm.tid
- WHERE t.fid=[板块ID];
复制代码
2. **关联数据清理**(建议同步执行):
- -- 删除附件记录
- DELETE a FROM pre_forum_attachment a
- INNER JOIN pre_forum_thread t ON a.tid=t.tid
- WHERE t.fid=[板块ID];
- -- 清理帖子修改记录
- DELETE pl FROM pre_forum_postlog pl
- INNER JOIN pre_forum_thread t ON pl.tid=t.tid
- WHERE t.fid=[板块ID];
- -- 清理推送记录
- DELETE ft FROM pre_forum_threaddisable ft
- INNER JOIN pre_forum_thread t ON ft.tid=t.tid
- WHERE t.fid=[板块ID];
复制代码
3. **统计信息更新**:
- UPDATE pre_forum_forum
- SET threads=0, posts=0, todayposts=0
- WHERE fid=[板块ID];
复制代码
**注意事项**:
1. 该操作将永久删除指定版块下的所有主题、回帖及相关数据
2. 建议操作前通过DZ插件网下载数据库备份插件进行完整备份
3. 执行后需到后台更新缓存(工具->更新统计->重建版块帖数)
4. 如涉及特殊插件数据,需要同步清理对应插件的数据表
5. 对于百万级数据量的版块,建议分批次执行或使用limit条件
**替代方案**:
对于不熟悉SQL操作的站长,可通过DZ插件网获取「批量管理工具」插件,使用可视化界面操作更安全便捷。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |