mysql - 带有异常处理的存储过程的检查点
问题描述
给定: 1. 我有一个 proc ( Parent ),它调用另一个 proc ( Child ),其中包含多个操作,例如更新多个列,例如 total_visits、total_revenue、total_items_sold 等。 2. 我有一个名为Event_Log的表,其中包含[proc_name, start_time, end_time, exit_status, error_message]用于存储每个过程Child和Parent的状态。
目标:实现基于检查点的方法来跟踪存储过程的执行,其中在成功完成任何过程/操作时不断更新检查点变量。它还必须更新Event_Log表以记录存储过程执行的进度。
到目前为止我读过的内容:
GET DIAGNOSTICS
文件- 类似的东西
DECLARE CONTINUE/EXIT HANDLER FOR SQLEXCEPTION
。
查找要使用的示例代码:
drop procedure if exists Parent;
delimiter $$
CREATE PROCEDURE Parent(value INT)
BEGIN
/* some event logic*/
CALL Child(12);
/* some event logic*/
INSERT INTO Event_Log(info...)
END$$
DELIMITER;
drop procedure if exists Child;
delimiter $$
CREATE PROCEDURE Child(value INT)
BEGIN
/* ---- some event logic ------
checkpoint 1 :
operation 1
checkpoint 2 :
operation 2
checkpoint 3 :
operation 3
*/
/* after execution of all the procs */
INSERT INTO Event_Log(info...)
END$$
DELIMITER;
CALL Parent(123);
因此,如果输入checkpoint 2
失败Child
,则 Event_Log 必须具有
- 父失败 - 错误消息
- Child failed - SQL 异常的错误消息、检查点编号、错误消息。
提前致谢。
解决方案
推荐阅读
- python - Buildozer 编译时安装多个包失败
- bintray - 在哪里报告 Bintray 问题?
- javascript - 使用 Java 中的 Javascript 函数将动态值传递给 HTML 标签
- flutter - RangeError:值不在范围内:在一个简单的子字符串命令上 - 飞镖
- python - 如何在 HTML 模板中显示性别名称
- python - 是否有用于计算矩阵的稀疏非负因式分解的 Python 函数?
- r - 如何将表(rhandsontable 包)中的更改更新到 PostgreSQL 数据库?
- electron - 在 Electron 的 net.request 上设置连接超时
- terraform - Terraform 数据源行为,找不到资源 404
- javascript - ASP.NET iframe 路由 - 以错误的顺序加载 JS 文件