MySql 触发器 循环遍历
来源:互联网 发布:linux开源社区 编辑:程序博客网 时间:2024/06/06 07:51
由于在做项目的时候遇到了,需要能遍历表的触发器,但是对语法不是很熟悉,今天就在这个做个笔记,也一起研究研究,大家有什么问题都可以提,我能jie。下面是完整示例代码,并加了注释:
1.使用游标的方法遍历—repeat until
DROP TRIGGER `saa`;CREATE TRIGGER `saa` AFTER INSERT ON `user`FOR EACH ROW begin declare user varchar(255); /*定义属性*/ declare pwd varchar(255); declare Done int DEFAULT 0;/*判断循环是否关闭的标志位*/ declare prd_code VARCHAR(255); /*定义游标 以及赋值 如果多个值就注意下游标取值*/ declare result cursor for select id from user;/*定义异常处理 */ declare continue handler for not found set Done =1; /*打开游标*/ open result ;/*提取游标的值 多个值的时候: fetch xxx into xxx,xxx */ fetch result into prd_code; /*循环开始*/ repeat /*TODO 根据用户id获取信息,存保存到另一张表*/ select login_name,login_password into user,pwd from user where id=prd_code; insert into online(user,name) values(user,pwd); fetch result into prd_code; until Done = 1 end repeat ;/*关闭循环*/ close result ;/*关闭游标*/end;
2.使用游标的方法遍历—loop
begin declare user varchar(255); /*定义属性*/ declare pwd varchar(255); declare Done int DEFAULT 0;/*判断循环是否关闭的标志位*/ declare prd_code VARCHAR(255); declare prd_usr VARCHAR(255);/*定义游标 以及赋值*/ declare result cursor for select id,login_name from user;/*定义异常处理 */ declare continue handler for not found set Done =1; /*打开游标*/ open result ;/*循环开始*/flag_loop:loop /*提前游标的值 多个值的时候: fetch xxx into xxx,xxx */ fetch result into prd_code,prd_usr ; /*声明结束的时候*/ if Done then leave flag_loop ; end if ; /*TODO 根据用户id获取信息,存保存到另一张表*/ select login_name,login_password into user,pwd from user where id=prd_code; insert into online(user,name) values(user,pwd); end loop flag_loop; /*循环结束*/ close result ;/*关闭游标*/end
3.使用游标的方法遍历—while do
语法:[label:]while 条件 do /TODO/ end while [label]
begin declare user varchar(255); /*定义属性*/ declare pwd varchar(255); declare Done int DEFAULT 0;/*判断循环是否关闭的标志位*/ declare prd_code VARCHAR(255); declare prd_usr VARCHAR(255);/*定义游标 以及赋值*/ declare result cursor for select id,login_name from user;/*定义异常处理 */ declare continue handler for not found set Done =1; /*打开游标*/ open result ;/*循环开始*/flag_while:while Done=0 do /*提前游标的值 多个值的时候: fetch xxx into xxx,xxx */ fetch result into prd_code,prd_usr ; /*声明结束的时候*/ if Done=1 then leave flag_while ; end if ; /*TODO 根据用户id获取信息,存保存到另一张表*/ select login_name,login_password into user,pwd from user where id=prd_code; insert into online(user,name) values(user,pwd); end while flag_while; /*循环结束*/ close result ;/*关闭游标*/end
总结
其实 loop 跟while 的用法都差不多,repeat 的就小心点了,游标循环取值会有点麻烦。。。祝大家学习愉快!
阅读全文
0 0
- MySql 触发器 循环遍历
- Mysql游标循环遍历
- mysql分区表,循环分区,触发器自动删除
- MySQL 存储过程循环遍历
- mysql里怎样循环遍历游标
- MYSQL存储过程循环遍历插入数据
- 【mysql 触发器】触发器使用
- MYSQL 触发器
- mysql 触发器
- Mysql 触发器
- mysql 触发器
- mysql触发器
- MYSQL 触发器
- MySQL触发器
- mysql 触发器
- mysql触发器
- MYSQL 触发器
- mysql 触发器
- 031、内部类
- 机器与人类的关系 踏入人工智能的世界
- 函数参数压栈的顺序为从右向左
- Tomcat 源码阅读(四)Connector
- 排查Linux机器是否已经被入侵
- MySql 触发器 循环遍历
- Java选择和冒泡排序
- ccf "I'm stuck!"(AC)
- 引用单元测试模块unittest框架(二)
- 黑客攻击手段升级:恶意软件植入合法软件之中
- 软件众包平台排行最新
- 032、匿名内部类
- 通过onMeasure方法修改布局高跟宽的比例
- String,StringBuffer,StringBulider的区别