mysql触发器
基本概念
触发器(trigger)是一种特殊类型的存储过程。它主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。
本质:是一种非常接近与js中的事件的知识。提前给某张表的所有记录(行)绑定一段代码,如果该行的操作满足条件(触发前置条件),这段代码提前准备好的代码就会自动执行。
那么它有什么作用呢?
1、可以在写入数据表前,强制检验或转换数据。(保证数据安全)
2、触发器发生错误时,异动会被撤销。(触发器执行错误,前面用户已经执行成功的操作也会被插销:事务安全)
3、部分数据库管理系统可以针对数据定义语言使用触发器(称为:DDL触发器)
触发器优缺点
优点:
1、可通过数据库中的相关表实现级联操作。
2、保证数据安全,可进行安全校验。
缺点:
1、对触发器过分依赖,势必会影响数据库的结构,同时增加了维护复杂程度。
2、造成数据在程序层面不可控。
基本语法
1、创建触发器
delimiter $$
create trigger 触发器名 触发时机 触发事件 on 表 for each row
begin
执行内容
end
$$
delimiter ;
触发对象:触发器绑定的实质是表中的所有行,因此当每一行发生变化时,就会触发触发器。
触发时机:每张表中对应的行都会有不同的状态,当SQL指令发生时,都会令行中数据发生改变,每一行总会有两种状态(数据操作前before、数据操作后after)。
触发事件:mysql中触发器针对的目标是数据发生改变,对应的操作只有写操作(增删改)
注意:一张表中每一个触发时机绑定的触发事件对应的触发器类型只能有一个,最多只能有6个触发器(before insert、after insert、before update、after update、before delete、after delete)。
2、查看触发器
方式一:查看全部触发器
show triggers;
方式二:查看触发器的创建语句
show create trigger 触发器名;
3、执行触发器
让触发器指定的表中,对应的时机发生对应的操作即可。
4、删除触发器
drop trigger 触发器名;
应用
记录关键字:new、old
触发器针对的数数据表中每条记录(行),每行在数据操作前后都一个对应状态,触发器在执行之前就将对应状态获取到了,将没有操作之前的状态(数据)都保存到old关键字中,将操作后的状态(数据)都保存到new中。
因此,我们可以通过old和new来获取绑定表的对应的记录数据。用法如下:
关键字.字段名;
注意:insert操作,没有old。delete没有new。
创建触发器:商品自动扣除
验证:
创建触发器:当库存不足,下单失败
验证:
相关阅读
jsp servlet mysql实现的新闻发布管理系统项目源码附
今天给大家演示一下一款由jsp servlet mysql实现的新闻发布管理系统,主要实现了前台游客浏览新闻、评论新闻,后台管理员管理新闻等
MySQL 中的 information_schema 数据库
1. 概述 information_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库。其中 performance_schema 用于性
对于数据库管理员(DBA)来说,保持数据库运行在最佳状态需要具备敏捷,专注,快速反应的能力以及一颗冷静的头脑。数据库几乎是所有应用
maxwell 简介 Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis、RabbitMQ、
mysql> grant all privileges on test.* to 'ybb'@'%' identified by 'ybb'; Query OK, 0 rows affected (0.07 sec) mysql> flu