我是靠谱客的博主 温暖水壶,这篇文章主要介绍MySQL 如何在触发器中输出提示信息 && signal sqlstate ‘HY000‘ set message_text=‘错误信息‘MySQL 如何在触发器中输出提示信息 && signal sqlstate ‘HY000’ set message_text=‘错误信息’,现在分享给大家,希望可以做个参考。

MySQL 如何在触发器中输出提示信息 && signal sqlstate ‘HY000’ set message_text=‘错误信息’

找了半天发现mysql好像不支持,记录一下问题解决思路:
signal sqlstate ‘HY000’ set message_text=‘错误信息’

示例

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
-- 学生表 create table student( id bigint(20) primary key AUTO_INCREMENT, name varchar(30) NOT NULL, age int(3) NOT NULL ); -- 插入几条数据 insert into student(name,age) values ('Tony',11); insert into student(name,age) values ('Tom',12); insert into student(name,age) values ('Jack',13); insert into student(name,age) values ('Angle',18);

定义存储过程

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
-- 用游标循环找到最大学生年龄 DROP PROCEDURE IF EXISTS callback; CREATE PROCEDURE callback() BEGIN -- out BEGIN DECLARE max_age bigint(20) default 0; -- 学生最大年龄 DECLARE cur_age bigint(20) default 0; -- 存放当前学生age DECLARE done INT DEFAULT FALSE; -- 设置 游标终止标记 DECLARE student_cursor CURSOR FOR select age from student ; -- 定义游标 dpid_cursor 根据指定客户id DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 当找不到数据时设置标记为true 等同1 OPEN student_cursor; -- 打开游标 student_loop:LOOP IF done=1 THEN LEAVE student_loop; END IF; FETCH student_cursor INTO cur_age; -- 提取游标 IF cur_age > max_age THEN set max_age = cur_age; END IF; END LOOP student_loop; CLOSE student_cursor; -- 关闭游标 signal sqlstate 'HY000' set message_text=max_age; END;

调用 PROCEDURE

复制代码
1
2
3
-- 调用 call callback();

结果

输出了最大学生年龄的值,用着还不错哈
在这里插入图片描述

参考

参考文章
在这里插入图片描述


写在最后

好久没有交作业了,把欠的作业补一补,嗷呜

天下英雄出我辈,一入江湖岁月催
我是「无间行者」,努力把实践过的解决方案分享给大家
如果这篇文章对你有用,一个赞、一个评论、一个关注,我都很开心
码字不易,给点鼓励吧,让我知道你在看

最后

以上就是温暖水壶最近收集整理的关于MySQL 如何在触发器中输出提示信息 && signal sqlstate ‘HY000‘ set message_text=‘错误信息‘MySQL 如何在触发器中输出提示信息 && signal sqlstate ‘HY000’ set message_text=‘错误信息’的全部内容,更多相关MySQL内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(89)

评论列表共有 0 条评论

立即
投稿
返回
顶部