如何用MySQL实现后台数据审核功能

来源:语言推理作者:厦门程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《如何用MySQL实现后台数据审核功能》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何用MySQL实现后台数据审核功能》有用,将其分享出去将是对创作者最好的鼓励。

在后台管理系统中,数据审核功能是非常常见的需求,比如用户提交的内容、订单信息、配置变更等都需要经过审核才能生效。利用MySQL的特性可以低成本实现一套完整的数据审核流程,不需要额外引入复杂的组件。

如何用MySQL实现后台数据审核功能

核心表结构设计

实现审核功能首先需要设计合理的表结构,通常需要两张核心表,一张是业务数据主表,一张是审核记录表,部分场景也可以将审核状态直接放在业务表中。

业务数据主表

以文章提交审核为例,文章主表结构如下:

CREATE TABLE `article` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL COMMENT '文章标题',
  `content` text NOT NULL COMMENT '文章内容',
  `author_id` int(11) NOT NULL COMMENT '作者ID',
  `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态 0待审核 1审核通过 2审核驳回',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文章主表';

审核记录表

审核记录表用来存储每一次审核的操作信息,方便后续追溯:

CREATE TABLE `article_audit_log` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `article_id` int(11) NOT NULL COMMENT '文章ID',
  `audit_user_id` int(11) NOT NULL COMMENT '审核人ID',
  `audit_result` tinyint(1) NOT NULL COMMENT '审核结果 1通过 2驳回',
  `audit_remark` varchar(255) DEFAULT NULL COMMENT '审核备注',
  `audit_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_article_id` (`article_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文章审核记录表';

审核流程实现逻辑

完整的审核流程通常包含以下几个步骤:

  • 用户提交业务数据,初始状态为待审核
  • 审核人员在后台查看待审核数据列表
  • 审核人员执行审核操作,选择通过或驳回,填写备注
  • 系统更新业务数据状态,同时写入审核记录

查询待审核数据

审核人员登录后台后,首先查询所有待审核的文章:

SELECT 
  id,
  title,
  content,
  author_id,
  create_time
FROM article
WHERE status = 0
ORDER BY create_time DESC
LIMIT 0, 20;

执行审核操作

审核操作需要同时更新文章状态和写入审核记录,为了保证数据一致性,需要使用事务。以下是审核通过的示例逻辑:

-- 开启事务
START TRANSACTION;

-- 更新文章状态为审核通过
UPDATE article 
SET status = 1 
WHERE id = 123 AND status = 0;

-- 如果更新影响行数为0,说明文章不存在或者已经审核过,回滚事务
-- 这里可以通过程序判断受影响行数,受影响行数为1则继续
-- 写入审核记录
INSERT INTO article_audit_log (article_id, audit_user_id, audit_result, audit_remark)
VALUES (123, 1, 1, '内容合规,审核通过');

-- 提交事务
COMMIT;

如果是审核驳回,只需要修改对应的状态和审核结果即可:

START TRANSACTION;

UPDATE article 
SET status = 2 
WHERE id = 123 AND status = 0;

INSERT INTO article_audit_log (article_id, audit_user_id, audit_result, audit_remark)
VALUES (123, 1, 2, '内容包含违规信息,予以驳回');

COMMIT;

利用触发器简化审核记录写入

如果希望每次审核状态变更时自动写入审核记录,不需要在业务代码中显式插入审核日志,可以使用MySQL触发器实现。首先创建一个存储审核操作信息的临时变量,然后创建触发器:

-- 创建用于存储审核信息的会话变量
SET @audit_user_id = 0;
SET @audit_result = 0;
SET @audit_remark = '';

-- 创建更新文章状态时的触发器
DELIMITER //
CREATE TRIGGER `trg_article_after_update` 
AFTER UPDATE ON `article`
FOR EACH ROW
BEGIN
  -- 只有当状态从待审核变为其他状态时,才写入审核记录
  IF OLD.status = 0 AND NEW.status IN (1,2) THEN
    INSERT INTO article_audit_log (article_id, audit_user_id, audit_result, audit_remark)
    VALUES (NEW.id, @audit_user_id, @audit_result, @audit_remark);
  END IF;
END //
DELIMITER ;

使用触发器后,执行审核操作时只需要先设置会话变量,再更新文章状态即可:

-- 设置审核信息
SET @audit_user_id = 1;
SET @audit_result = 1;
SET @audit_remark = '自动触发审核通过';

-- 更新文章状态,触发器会自动写入审核记录
UPDATE article SET status = 1 WHERE id = 123 AND status = 0;

注意事项

在实际使用中需要注意以下几点:

  • 审核操作必须校验原状态为待审核,避免重复审核
  • 涉及状态更新和记录插入的操作尽量使用事务,防止数据不一致
  • 如果业务量较大,审核记录表需要合理添加索引,提升查询效率
  • 敏感操作的审核记录建议定期备份,满足审计要求

以上方案可以满足大部分中小型后台系统的数据审核需求,开发者可以根据自身业务场景调整表结构和流程逻辑。

MySQL数据审核后台审核触发器事务修改时间:2026-07-04 21:39:28

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。