mysql如何在触发器中输出提示信息“操作成功”,在触发器中我已经会抛出错误,但是却还不能输出提示

createtriggerdel_c_trbeforedeleteoncourseforeachrowBegindeclaremsgchar(20)characterse... create trigger del_c_tr before delete on course for each row
Begin
declare msg char(20) character set utf8;
Declare cc int;
select count(*) from sc where cno=old.cno into cc;
If cc=0
then set msg="删除成功";
在这里输出执行成功的提示

else
set msg="sc中有记录无法删除";
signal sqlstate 'HY000' set message_text=msg;
end if;
end//
展开
 我来答
山水阿锐
2015-06-26 · TA获得超过34.3万个赞
知道顶级答主
回答量:23.7万
采纳率:91%
帮助的人:3.2亿
展开全部
确实不行,这是MYSQL的存储过程十分不完善的地方

我也找了很久,后来想了了个巧妙的方法
IF @i> 30 THEN
-- 在这里抛出异常和取消 insert 操作
SELECT E001 INTO M_ERRMSG;
end if
1. MYSQL没有抛出异常的语句,MYSQL已经承认此语句为SIGNAL,目前还没封装.
2. 所以目前能做的是, 要在抛出异常的地方,插入一个错误语句
3. 这个错误语句只能是运行期错误语句,否则编译无法通过
4. 用SELELCT E001 INTO M_ERRMSG, 其中E001可以随便定义为一个不存在字段或函数, 因为这个错误是运行期错误,编译是可以通过的. 后面的INTO M_ERRMSG实际上没有什么用处, 因为SELECT 后面必须加INTO一个变量,否则编译也是不可以通过。
追问
哎,我用这句set msg="sc中有记录无法删除";
signal sqlstate 'HY000' set message_text=msg;可以抛出错误及提示信息,但是就不会执行语句了,唯独缺德是不能抛出操作执行成功的友好语句。。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式