存储过程内创建异常处理机制-自动检测错误类型并且用表记录.(详细请进贴)

Main_csdn_String 2018-03-12 04:56:37
DROP TRIGGER if EXISTS qweqwe; 
DROP TABLE if EXISTS tbl_eeeeeee;
DROP TABLE IF EXISTS strud_name;
CREATE TABLE strud_name (
`id` int(11) NOT NULL,
`class` int(11) NOT NULL,
`name` varchar(5) NOT NULL,
PRIMARY KEY (`id`)
);

CREATE TABLE tbl_eeeeeee(
`uuid` int(11) NOT NULL AUTO_INCREMENT COMMENT '从数据库主键id',
`error` varchar(10) NOT NULL COMMENT '错误代码',
`report_time` datetime NOT NULL COMMENT '异常生成时间',
`rec_status` varchar(10) NOT NULL COMMENT '异常生成状态',
`disposechart` varchar(20) NOT NULL COMMENT '异常生成表',
`anomalydomain` varchar(20) NOT NULL COMMENT '异常告警域',
PRIMARY KEY (`uuid`)
);

DELIMITER $$
CREATE TRIGGER qweqwe
before INSERT ON strud_name FOR EACH ROW
BEGIN
DECLARE code CHAR(5) DEFAULT '00000';
DECLARE msg TEXT;
DECLARE rows INT;
DECLARE result TEXT;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1
code = RETURNED_SQLSTATE, msg = MESSAGE_TEXT;
END;
IF code = '00000' THEN
-- 数据插入成功 记录这条记录
INSERT INTO tbl_eeeeeee(error,report_time,rec_status,disposechart,anomalydomain)VALUES('00000',NOW(),'OK','异常生成表','异常告警域');
ELSE
-- 可是数据插入失败,没有记录这条记录。
INSERT INTO tbl_eeeeeee(error,report_time,rec_status,disposechart,anomalydomain)VALUES('66666',NOW(),'no','异常生成表','异常告警域');
END IF;
insert into test.strud_name (id,class,name)VALUES(new.id,new.class,new.name);
END
$$
DELIMITER;

-- 重复插入第二次数据的时候会提示错误 可sql是先执行触发器 后实现sql语句
insert into strud_name (id,class,name)VALUES(1,2,'123');


select * from strud_name;
select * from tbl_eeeeeee;


以上的代码,可以直接在电脑上跑,看客如果想了解的话 也可以一起了解下mysql触发器的异常机制。

我现在遇到的问题在于我跑第一次的时候,会成功的执行00000参数 并且插入成功数据

使用的是before 触发器-等于是说先执行这个触发器,判断是否有错误,然后再进行数据的插入

可是在测试的时候-如果插入重复的id - 提示错误后,没有记录下来这个错误的信息。

参考内容:https://dev.mysql.com/doc/refman/5.7/en/get-diagnostics.html

问题重点是-增删改数据库的时候,我们提交sql 在数据库中经历了什么? 而我这儿为什么会提示插入数据库错误的情况下,触发器没有记录下来我插入的错误到表中
...全文
620 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Main_csdn_String 2018-03-19
  • 打赏
  • 举报
回复
引用 1 楼 zjcxc 的回复:
数据的合法性检测是早于触发器的
数据的合法性?。。。触发器的触发机制是要求执行还之前。在这之前不执行 。先触发-触发器,也应该是触发器先被触发器吧。不执行的情况下,也要检测数据的合法性?
zjcxc 2018-03-13
  • 打赏
  • 举报
回复
数据的合法性检测是早于触发器的
内容概要:本文介绍了DeepSeek在职场中的应用,从提示语技巧到多场景应用,涵盖了DeepSeek的基础模型(V3)、深度思考模型(R1)及其联网搜索功能。文中详细描述了DeepSeek的模型对比,包括操作规范、结果导向、路径灵活性、响应模式和风险特征等方面。此外,还探讨了DeepSeek在制作可视化图表、PPT、海报、视频以及批量生成新媒体文案等具体应用场景中的使用方法和技巧。最后,文章展示了DeepSeek在市场调查、AI应用开发等方面的应用实例,强调了其在人机协同和共生领域的潜力。 适用人群:适用于希望提升工作效率和创新能力的职场人士,特别是从事数据分析、内容创作、市场营销、AI开发等领域的专业人士。 使用场景及目标:①通过DeepSeek的基础模型(V3)和深度思考模型(R1)进行高效的任务处理和复杂推理;②利用DeepSeek制作可视化图表、PPT、海报和视频,提高内容创作的质量和效率;③通过DeepSeek进行市场调查和AI应用开发,优化业务流程并推动创新。 其他说明:DeepSeek不仅提供了强大的AI工具,还强调了人机协同的重要性。用户在使用过程中应注意操作规范,结合实际需求选择合适的模型,并充分利用DeepSeek的各项功能来实现高效的职场应用。文中还提到了多个国际竞赛中的获奖情况,展示了DeepSeek团队在AI领域的卓越实力。

56,940

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧