我是靠谱客的博主 干净水池,最近开发中收集的这篇文章主要介绍mysql触发器输出提示信息_MySQL触发器demo,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

MySQL触发器示例

0写在之前:

最近在带浙大本科生的数据库系统的上机课,我手里拿到的教学文档非常的老,本人及不习惯老文档里的sql server的操作,就让大家安装的MySQL,这就有了个问题:MySQL上很多SQLserver的操作都无法实现,写触发器时大家遇到很多问题就来问我,于是我探索了一下MySQL触发器的使用。

1触发器要求:

假设有一个借书记录表,规定一张借书卡一学期只能借至多2本书,当借第三本书时,触发器触发,输出不能借三本书,并自动回滚。

2首先数据库

创建数据库 借书记录borrow: 各属性(卡号,借书证号,借期,还期)的类型如下:


cno
char(7),
bno
char(8),
borrow_date date,
return_date date, 

插入两条数据:

1. ('cno4','bno1','2010-9-4','2010-9-10');
2. ('cno4','bno2','2010-9-4','2010-9-10');

结果如下图所示:

3创建触发器

代码如下:

DELIMITER ||
CREATE TRIGGER borrow_warning AFTER INSERT ON borrow FOR EACH ROW
BEGIN
DECLARE num int;
DECLARE msgs VARCHAR(60);
set num =(select count(cno) FROM borrow WHERE cno=new.cno);
IF num>2 THEN
select 'cannot brorow three books' into @msgs;
delete FROM borrow WHERE cno=new.cno AND bno=new.bno ;
END IF;
END ||

创建触发器后记得取消符号声明:DELIMITER ;,后面才能正常使用;

需要注意的是:

1 MySQL的触发器中没有print函数,所以我定义了一个变量msgs,当借了三本书条件触发时,我将需要输出的信息传入变量msgs

2 MySQL的触发器中没有rollback,所以我曲线救国,用delete将新插入的那条记录删除(当然这条删除语句在某些情况下会删错,这里我就懒得深究了)

3查看结果

在此之前我们以插入了两条记录,并且两条记录的cno都是cno4,先查看一下msgs的值:

还没有值,因为我们的触发器还没有触发(虽然我事先插入两条数据,再创建的触发器,不过逻辑上肯定是应该msgs=null的)。那么我再插入一条数据:

报错了,提示无法更新borrow表,其实就是插入了同一个cno的第三条借书记录,触发了触发器,再看看msgs是什么呢:

这正是我们想要的结果。

4结语

MySQL触发器是个天坑,花了我几个小时写这玩意儿,有条件的同学去用sqlserver试试。shit,触发器里的borrow打成了brorow.

最后

以上就是干净水池为你收集整理的mysql触发器输出提示信息_MySQL触发器demo的全部内容,希望文章能够帮你解决mysql触发器输出提示信息_MySQL触发器demo所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部