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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551459.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

监控mysql数据库里的数据_有谁知道哪种软件可以监控mysql数据库上执行的数据脚本吗?...

LOG4j可以配置log4j.rootLoggerDEBUG, stdoutlog4j.appender.stdoutorg.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layoutorg.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern%c{1} - %m%nlog4j.logger.java.sql.PreparedStatementDEBUGl…

将dll制作成控件_全国首例将“影视作品”制作成“网络图片集”方式侵权案宣判...

最早知道“图解电影”是在百度贴吧,以前贴吧会有很多以截取电影主要剧情截图,介绍电影故事梗概的推荐电影形式,目前也有很多短视频平台和视频平台,推出电影主要内容的剪辑片段,那么,以这样的形式接受一部电…

阿里云 ecs mysql搭建_使用ECS和mysql搭建mysql服务器-阿里云开发者社区

一、首先得在阿里云等云主机上申请两台主机二、现在连上去安装mysql1、通过安装源将mysql下载下来[rootiz2ze2llim71y07x3numlbz ~]# wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm--2018-03-26 16:52:00-- https://dev.mysql.com/get/mysql57-…

为什么python提示没有clock_python – 为什么time.clock比time.time给出更长的时间?

我使用time.clock和time.time在Ubuntu上定时了一段python代码:clock elapsed time: 8.770 stime elapsed time: 1.869 s我知道time.time使用系统时间和time.clock使用处理器时钟.当time.time给出比time.clock更长的经过时间时,这对我来说是有意义的:处理…

kalman滤波在雷达目标跟踪中的应用_简述Automotive radar中的多目标跟踪处理

毫米波雷达在目前的先进辅助驾驶(ADAS)中的应用主要体现在自适应巡航控制(Adaptive Cruise Control,ACC),预碰撞(PreCrash),泊车辅助(Parking Aid),变道辅助(…

oracle 拼接多个列_ORACLE实现类似mysql的find_in_set

在程序开发的过程中有很多的场景都会使用一个字段保存多个信息并且使用符号分隔,比如写一篇文章,保存了所有赞赏人员的ID。在一般的应用中除了保存外,还需要对此字段进行一些搜索,如站点中搜索所有我赞赏的文章。下面我们就来讲一…

放大缩小保证div对齐_NFS Write IO 不对齐深度分析

导读:NFSClient 对大多数的应用写入没有做对齐优化,本文根据 IO 不对齐的原因给出了若干实践建议。作者 | 裴晓辉背景最近团队小伙伴弗曼统计了线上用户数据写入对齐情况,通过统计数据发现了一个有趣的现象: 用户写入请求中近 70% 的数据块 4…

MySQL+for+Mac下载_MySQL For mac

MySQL For Mac官方版是一款可以在苹果电脑MAC OS平台上使用的多线程的、结构化查询语言(SQL)数据库服务器,SQL在世界上是最流行的数据库语言,MySQL For Mac最新版的执行性能非常高,运行速度非常快,并且MySQL For Mac非常容易使用。MySQL For …

mysql断电不受影响db引擎_一次服务器断电,造成innodb引擎表(日志表)损坏的解决办法...

1、mysql日志报错innodb引擎提示数据库没有正常关闭,报innodb错误180112 0:49:28 InnoDB: Database was not shut down normally!InnoDB: Starting crash recovery.InnoDB: Reading tablespace information from the .ibd files...InnoDB: Restoring possible hal…

mysql简单语句_MySQL 简单的语句

一:连接MySQL格式: mysql -h主机地址 -u用户名-p用户密码1. mysql –uroot–p123456 连接本机MYSQL2. mysql –h108.108.108.108 –uroot –p123456 连接远程MYSQL退出MYSQL环境,exit (回车) 或者 CtrlC二:修改密码 格…

石头剪刀布程序流程图_石头剪刀布!我要与电脑决战到天明!(14天)

1、学习心得原来一直以为,学了这个600集视频,应该就能自己做点啥了,比如我的最终目的:爬学区房。但是我今天学的时候,隐隐觉得,好像不大现实。毕竟,这都到了200多集,我依然还是个纯粹…

python做地图导航_「Python」利用高德地图做你想做之事

玩grasshopper基本上都知道OpenStreetMap 这个地图网站,毕竟有一个好用的地图插件,可以在Rhino中绘制出所需,但是一个不好的地方就在于国内的数据量太少,无法满足我们的需求。此次所讲的高德地图基本上可以解决我们的痛点&#xf…

python列表存储字符串_Python 基础知识全篇-字符串列表

现在我们已经对列表有了一定的了解。回头看一下字符串,会发现它不过是字符的集合,即包含一系列字符的列表。它们背后的工作原理是如此的相似,接下来让我们一探究竟吧。作为字符列表的字符串就像列表一样,我们可以对一个字符串作循…

elementui分页组件按钮样式修改_Vue使用Elementui修改默认最快方法!

相信大家都需要过,在Vue中使用Elementui的时候,遇到最多也最蛋疼的问题就是修改默认样式,接下来直奔主题;// template :text-inside"true" :stroke- :percentage"70" >-progress>默认样式方法…

MySQL创建不了计划任务_MySQL创建定时任务(或计划任务)

MySQL 从 5.1.6 版本起,增加了一个时间调度器(Event Scheduler),可以做定时操作,精确到秒来执行。首先查看定时任务是否开启,命令SHOW VARIABLES LIKE event_scheduler;若没有开启,则使用如下命令开启定时器SET GLOBAL…

ipython怎么安装_ipython的两种安装方式

第一种方式:通过python-pip安装ipythonrpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmyum install python-pippip install ipython1.2.1//适用Python2.6pip list//可以显示已安装的模块卸载pip uninstall ipython1.2.1第二种…

python 全局变量使用报错没有定义_Python变量作用域代码解析

本篇文章小编给大家分享一下Python变量作用域代码解析,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。特点python的作用域是静态的,在源代码中变量名被赋值的位置决定…

python 画出决策边界_Python3入门机器学习 - 逻辑回归与决策边界

logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,以胃癌病情分析为例,选择两组人群,一组是胃癌组,一组是非胃癌组,两组人群必定具有不同的体征与生活方式等。因此因变量就为是否胃癌,值为“…

mysql基础测试_MySQL基础知识测试

SQL基础知识测试1 . SQL 指的是?Strong Question LanguageStructured Question LanguageStructured Query Language2 . 哪个SQL 语句用于从数据库中提取数据?EXTRACTSELECTOPENGET3 . 哪条SQL 语句用于更新数据库中的数据?MODIFYSAVE ASUPDAT…

mybatis字符串转成数字_计算机储存数字和字符的方法你了解多少?

前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考。本文链接: http://1t.click/J7E前言最近在学习中涉及到计算机储存、传输数字和字符等操作,由于对字节、2进制、10进制、16进制、ASCII码的概念以及它们之…