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;
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/
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 (
);
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. 实施要点:
6. 异常处理流程:
mermaid
graph TD
A[修改请求] > B{原因是否填写?}
B >|是| C[创建历史记录]
B >|否| D[返回错误提示]
C > E[更新主记录]
E > F{是否成功?}
F >|是| G[返回成功响应]
F >|否| H[回滚事务并告警]
建议配合以下管理措施:
1. 定期审计(每月)
2. 用户操作培训(每季度)
3. 自动清理脚本(保留期限外数据)
4. 权限分级管理制度
5. 修改原因填写规范指南
可以根据具体业务需求调整字段长度、保留期限等参数,并建议在数据库变更窗口期执行表结构修改操作。
版权声明: 知妳网保留所有权利,部分内容为网络收集,如有侵权,请联系QQ793061840删除,添加请注明来意。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态
