mysql 触发器 for each row 理解_“for each row”如何在mysql中的触发器中工作?
FOR EACH ROW表示每个匹配行的更新或删除.
除非查询中有where条件,否则触发器主体不会遍历整个表数据.
下面演示了一个工作示例:
创建样本表:
drop table if exists tbl_so_q23374151;
create table tbl_so_q23374151 ( i int, v varchar(10) );
-- set test data
insert into tbl_so_q23374151
values (1,'one'),(2,'two' ),(3,'three'),(10,'ten'),(11,'eleven');
-- see current data in table**:
select * from tbl_so_q23374151;
+------+--------+
| i | v |
+------+--------+
| 1 | one |
| 2 | two |
| 3 | three |
| 10 | ten |
| 11 | eleven |
+------+--------+
5 rows in set (0.00 sec)
用于记录触发器主体中循环计数的样本表:
-- let us record, loop count of trigger, in a table
drop table if exists tbl_so_q23374151_rows_affected;
create table tbl_so_q23374151_rows_affected( i int );
select count(*) as rows_affected from tbl_so_q23374151_rows_affected;
+---------------+
| rows_affected |
+---------------+
| 0 |
+---------------+
定义删除触发器:
drop trigger if exists trig_bef_del_on_tbl_so_q23374151;
delimiter //
create trigger trig_bef_del_on_tbl_so_q23374151 before delete on tbl_so_q23374151
for each row begin
set @cnt = if(@cnt is null, 1, (@cnt+1));
/* for cross checking save loop count */
insert into tbl_so_q23374151_rows_affected values ( @cnt );
end;
//
delimiter ;
现在,测试删除操作:
delete from tbl_so_q23374151 where i like '%1%';
-- now let us see what the loop count was
select @cnt as 'cnt';
+------+
| cnt |
+------+
| 3 |
+------+
现在,检查主表上的触发效果:
-- now let us see the table data
select * from tbl_so_q23374151;
+------+-------+
| i | v |
+------+-------+
| 2 | two |
| 3 | three |
+------+-------+
2 rows in set (0.00 sec)
select count(*) as rows_affected from tbl_so_q23374151_rows_affected;
+---------------+
| rows_affected |
+---------------+
| 3 |
+---------------+
1 row in set (0.00 sec)
mysql 触发器 for each row 理解_“for each row”如何在mysql中的触发器中工作?相关推荐
- mysql 单表字段多少合适_复制信息记录表|全方位认识 mysql 系统库
在上一期<时区信息记录表|全方位认识 mysql 系统库>中,我们详细介绍了mysql系统库中的时区信息记录表,本期我们将为大家带来系列第七篇<复制信息记录表|全方位认识 mysql ...
- centos mysql 5.2.3 编译安装_在CentOS上编译安装MySQL 5.7.13步骤详解
MySQL 5.7主要特性 更好的性能 对于多核CPU.固态硬盘.锁有着更好的优化,每秒100W QPS已不再是MySQL的追求,下个版本能否上200W QPS才是用户更关心的. 更好的InnoDB存 ...
- mysql 统计做饼状图_使用Highcharts结合PHP与Mysql生成饼状图
我们在做复杂的数据统计功能时会用到饼状图,饼状图用整个圆表示总体的数量或整体值1,用圆内各个扇形的大小表示各部分数量或该部分占总体的百分比,它可以清晰直观的表示各部分之间以及各部分与整体之间的数量关系 ...
- mysql数据转存到时序数据库_干货丨如何高速迁移MySQL数据到时序数据库DolphinDB...
DolphinDB提供了两种导入MySQL数据的方法:ODBC插件和MySQL插件.我们推荐使用MySQL插件导入MySQL数据,因为它的速度比ODBC导入更快,导入6.5G数据,MySQL插件的速度 ...
- mysql服务启动成功后卸载_安装,启动与卸载Mysql系统服务(MYSQL常见问题)
将Mysql添加到Windows系统服务中: 1.. 安装服务. 在Windows2000下,安装完成后,并没有把MySQL安装成服务,我们必须执行下面的语句把MySQL注册为服务:installdi ...
- mysql性能功能是什么意思_究竟是什么影响了MySQL的性能
1.影响数据库性能的几个方面 服务器硬件 服务器系统 数据库存储引擎的选择(MySQL的插件式存储引擎) MyISAM:不支持事务,表级锁. InnoDB:事务级存储引擎,完美支持行级锁,事务ACID ...
- mysql知识总结体会博客_可能是全网最好的MySQL重要知识点/面试题总结||CSDN博客精选...
什么是MySQL?MySQL 是一种关系型数据库,在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展.阿里巴巴数据库系统也大量用到了 MySQL,因此它的稳定性是有保障的.M ...
- mysql 联合索引的命中规则_可能是全网最好的MySQL重要知识点/面试题总结
标题有点标题党的意思,看了文章之后希望大家不会有这个想法,绝对干货!!!这篇花文章是我花了几天时间对之前总结的MySQL知识点做了完善后的产物,这篇文章可以用来回顾MySQL基础知识以及备战MySQL ...
- mysql数据库怎么查看端口号_怎么查看数据库端口号(mysql怎么查看端口号)
怎么查看数据库端口号(mysql怎么查看端口号) 2020-05-08 11:20:02 共9个回答 如何查看自己数据库的端口号 navicat,找到服务器,右键->连接属性,就找到端口号了 如 ...
最新文章
- sass的继承,混合宏,占位符的用法总结
- Keras正式从TensorFlow分离:结束API混乱与耗时编译
- 基于特征的推荐算法【转】
- Linux多线程矩阵,操作系统实验——多线程计算矩阵相乘
- CentOS7下Spark集群的安装
- select语句 rows相等_我去,这两个小技巧,让我的SQL语句不仅躲了坑,还提升了 1000 倍(半分钟干货系列)...
- spring-beans下的BeanUtils.copyProperties
- 第二章 数学运算、数组、文字处理
- 使用 github + jekyll 搭建个人博客
- Word VBA:批量更改图片的格式
- CentOS7 yum 安装 maven
- synchronized锁住的对象
- 跳过selenium检测爬取淘宝直通车
- 网页设计配色应用实例剖析——黄色系
- linux命令下jq的用法(curl 格式化输出json 字符串)
- 运放参数详细解释与分析
- 搜索引擎如何判定站群是否作弊?
- vue 插件qs使用
- Win7开启无线热点AP
- ORA-01950: no privileges on tablespace ‘USERS‘