热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

触发器_(17)MySQL中的触发器

篇首语:本文由编程笔记#小编为大家整理,主要介绍了(17)MySQL中的触发器相关的知识,希望对你有一定的参考价值。MySQL中的触发器

篇首语:本文由编程笔记#小编为大家整理,主要介绍了( 17 )MySQL中的触发器相关的知识,希望对你有一定的参考价值。


MySQL中的触发器



 

触发器


需求:有两张表,一张定单表,一张商品表.每生成一个订单,商品库存就相应减少.


触发器 ( trigger )


事先为某张表绑定好一段代码,当某些内容发生改变的时候(增删该),系统会自动触发代码的执行.

触发器包括 : 事件类型,触发时间,触发对象

事件类型: 增删改,三种类型 insert ,delete和update.

触发时间: 触发前后 before 和 after

触发对象:表中的每一条记录(行)

一张表中只能有一种触发时间的一种类型的触发器 : 一张表最多有6个触发器.


创建触发器


------------------------------------------------------------

-- 临时修改语句结束符

delimiter 自定义符号

create trigger 触发器名字 触发时间 事件类型 on 表名 for each row

begin -- 代表左大括号:开始

-- 里面是触发器的内容

end --代表右大括号:结束

-- 将临时修改的语句结束符修改为分号

delimiter ;

------------------------------------------------------------


创建表并插入数据

 技术分享

 

-- 创建触发器 生成一个订单,商品库存减少


delimiter $

create trigger after_order after insert on my_order for each_row

begin

-- 触发器内容开始

update my_goods set inv = inv-new.g_number where id = new.id ;

end

delimit ;

技术分享

 


查看触发器


查看所有触发器或者模糊匹配

show trigger [like ‘pattern‘]

技术分享


查看触发器创建语句:


show create trigger 触发器名字 ;

所有的触发器都会保存到系统的一张表中 information_schemea.triggers

技术分享


使用触发器


触发器:不需要手动调用,当某种情况(触发类型)下会自动触发.

技术分享


修改触发器&&删除触发器


触发器不能被修改,只能删除之后新增

drop trigger 触发器名称 ;


触发器记录


触发器记录 : 不管触发器是否触发了,只要当某种操作准备执行,系统就会将当前操作记录的当前状态和即将执行之后的新的状态给分别保留下来,供触发器使用.其中要操作当前状态保存在old中,操作之后的可能形态保存到new中.

技术分享



old 代表的是就记录,new代表新纪录

插入的时候没有old , 删除的时候没有new. 任何一条记录除了有数据,还有字段名字.

old和new的使用方式 : old.字段名 / new.字段名 (new 代表假设发生之后的结果)


执行代码结构


执行代码结构 : 顺序结构,分支结构,循环结构

分支结构:实现准备多个代码块,按照条件选择性执行某段代码

mysql中只有 if 分之

基本语法:

-----------------------------------------------------------

if 条件判断 then

-- 满足条件要执行的代码

else

-- 不满足条件执行的代码

end if ;

------------------------------------------------------------

技术分享

 


触发器结合if分支,若商品数量不够,就不能生成订单.

 

循环结构


循环结构: 某段代码在指定的条件重复执行


while循环基本语法


------------------------------------------------------------

while 条件判断 do

-- 满足条件要执行的代码

-- 变更循环条件

end while ;

------------------------------------------------------------


循环控制 : 在循环内部进行循环判断,mysql中没有continue和break.


iterate : 迭代,类似continue 后面的代码不执行,循环重新来过

leave : 离开 类似break 整个循环结束.

使用方式: iterate / leave 循环名字;

-- 定义循环名字

循环名字 : while 条件 do

-- 循环体

--循环控制

iterate / leave 循环名字 ;

end while ;


 


推荐阅读
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 20189216 2018-2019-2 《密码与安全新技术专题》第二次作业
    201892162018-2019-2《密码与安全新技术专题》第二次作业课程:《密码与安全新技术专题》班级:1892班姓名:鲍政李学号:20189216上课教师:谢四江上课日期: ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了24.QTableView函数使用,右击菜单实现相关的知识,希望对你有一定的参考价值。QTableViewview(this); ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 这篇文章主要介绍了Python拼接字符串的七种方式,包括使用%、format()、join()、f-string等方法。每种方法都有其特点和限制,通过本文的介绍可以帮助读者更好地理解和运用字符串拼接的技巧。 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 通过手机浏览器调用客户端QQ
    php教程|php手册thinkphp代码,代码示例,代码参考,php短信,数据库备份代码,令牌验证,去除代码中的空白和注释调用QQ客户端php教程-php手册可调用iosandr ... [详细]
author-avatar
传闻中的张先生
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有