所有记录修改都要写原因

 2026-04-08  阅读 66  评论 0

摘要:1. 数据库设计优化
在原数据表中增加字段:
sql
ALTER TABLE records
ADD COLUMN modification_reason VARCHAR(500) NOT N

1. 数据库设计优化

所有记录修改都要写原因

  • 在原数据表中增加字段:
  • sql

    ALTER TABLE records

    ADD COLUMN modification_reason VARCHAR(500) NOT NULL,

    ADD COLUMN modified_by VARCHAR(45) NOT NULL,

    ADD COLUMN modification_time DATETIME DEFAULT CURRENT_TIMESTAMP;

  • 创建历史记录表(MySQL示例):
  • sql

    CREATE TABLE record_history (

    history_id INT AUTO_INCREMENT PRIMARY KEY,

    record_id INT NOT NULL,

    old_data JSON,

    new_data JSON,

    modification_reason VARCHAR(500),

    modified_by VARCHAR(45),

    modified_at DATETIME DEFAULT CURRENT_TIMESTAMP,

    FOREIGN KEY (record_id) REFERENCES records(id)

    );

    2. 应用层实现逻辑

    python

    示例:Python Flask API端点

    @app.route('/update_record/', methods=['PUT'])

    def update_record(record_id):

    data = request.get_json

    if 'modification_reason' not in data or not data['modification_reason']:

    return jsonify({"error": "Modification reason is required"}), 400

    try:

    获取原始数据

    original_record = Record.query.get(record_id)

    创建历史记录

    history = RecordHistory(

    record_id=record_id,

    old_data=original_record.to_json,

    new_data=request.json,

    modification_reason=data['modification_reason'],

    modified_by=current_user.username

    db.session.add(history)

    更新主记录

    original_record.update(data)

    db.mit

    return jsonify({"message": "Record updated successfully"}), 200

    except Exception as e:

    db.session.rollback

    return jsonify({"error": str(e)}), 500

    3. 前端验证示例(React)

    jsx

    function UpdateForm {

    const [reason, setReason] = useState('');

    const handleSubmit = async (e) => {

    e.preventDefault;

    if (!reason.trim) {

    alert('请填写修改原因');

    return;

    // 提交逻辑...

    };

    return (

    className="reason-input

    value={reason}

    onChange={(e) => setReason(e.target.value)}

    placeholder="请输入详细的修改原因...

    required

    />

    );

    4. 审计日志查询接口

    sql

  • 获取完整修改历史
  • SELECT

    h.modified_at AS 修改时间,

    h.modified_by AS 修改人,

    h.modification_reason AS 修改原因,

    JSON_EXTRACT(h.old_data, '$.content') AS 旧内容,

    JSON_EXTRACT(h.new_data, '$.content') AS 新内容

    FROM record_history h

    WHERE h.record_id = 123

    ORDER BY h.modified_at DESC;

    5. 实施要点:

  • 数据库层:设置NOT NULL约束和默认值
  • 应用层:双重验证(前端+后端)
  • 权限控制:禁止直接数据库修改
  • 历史保留:设置数据保留策略(至少保留2年)
  • 加密存储:对敏感修改原因进行加密
  • 6. 异常处理流程:

    mermaid

    graph TD

    A[修改请求] > B{原因是否填写?}

    B >|是| C[创建历史记录]

    B >|否| D[返回错误提示]

    C > E[更新主记录]

    E > F{是否成功?}

    F >|是| G[返回成功响应]

    F >|否| H[回滚事务并告警]

    建议配合以下管理措施:

    1. 定期审计(每月)

    2. 用户操作培训(每季度)

    3. 自动清理脚本(保留期限外数据)

    4. 权限分级管理制度

    5. 修改原因填写规范指南

    可以根据具体业务需求调整字段长度、保留期限等参数,并建议在数据库变更窗口期执行表结构修改操作。

    版权声明: 知妳网保留所有权利,部分内容为网络收集,如有侵权,请联系QQ793061840删除,添加请注明来意。

    原文链接:https://www.6g9.cn/qwsh/dd8f3AD5QU1VTBl0.html

    发表评论:

    关于我们
    知妳网是一个专注于知识成长与生活品质的温暖社区,致力于提供情感共鸣、实用资讯与贴心服务。在这里,妳可以找到相关的知识、专业的建议,以及提升自我的优质内容。无论是职场困惑、情感心事,还是时尚美妆、健康生活,知妳网都能精准匹配妳的需求,陪伴妳的每一步成长。因为懂妳,所以更贴心——知妳网,做妳最知心的伙伴!
    联系方式
    电话:
    地址:广东省中山市
    Email:admin@qq.com

    Copyright © 2022 知妳网 Inc. 保留所有权利。 Powered by

    页面耗时0.1052秒, 内存占用1.71 MB, 访问数据库19次