MySQL-SQL之游标,触发器和事务
2017-12-03 21:19
405 查看
游标的出现使得对一个查询结果集的每一行结果能够更细粒度的操作,现在MySQL只支持在存储过程中定义存储过程。一个游标的使用过程是这样的:
* 使用
* 使用
* 使用fetch语句获取结果中的一行结果到变量
* 使用
效果如下,每行都会打印一个结果
所以触发器的创建格式是:
一个实例,比如我在修改一个customer的信息的时候记录下对应的cust_id,cust_name和对方的ip,已经修改的时间到customer_audit表
执行一条update语句修改customers中的值得到
注意declare声明的局部变量仅使用于存储过程的begin,end块中,并且要在begin开始后就声明所需要的局部变量,不然会报出执行错误,如果想要在存储过程之外使用变量,可以使用以@开头的用户变量,下面是一个使用事务处理的例子。
* 使用
<declare 游标名 cursor for 查询语句>定义一个游标
* 使用
<open 游标名>打开游标准备使用
* 使用fetch语句获取结果中的一行结果到变量
<fetch 游标名 into 变量名>
* 使用
<close 游标名>关闭游标
创建并使用游标
下面是一个通过游标遍历每一行并输出的过程效果如下,每行都会打印一个结果
创建触发器
创建触发器要指明四点:1)触发器的名字,2)触发器响应的活动(delete,insert,update),3)触发器响应活动的时间(before after),4)触发器关联的表名称所以触发器的创建格式是:
create trigger 触发器名称 触发器时间 触发器响应活动 on 关联表名 for each row begin 处理逻辑 end;
一个实例,比如我在修改一个customer的信息的时候记录下对应的cust_id,cust_name和对方的ip,已经修改的时间到customer_audit表
执行一条update语句修改customers中的值得到
使用事务
使用start transaction;开启事务,根据业务处理判断后选择提交事务
commit;或者回滚
rollback;,注意默认的mysql是开启自动提交事务的,需要手动设置
set autocommit=0关闭事务,可以通过
row_count()>0函数获取执行结果是否执行成功,最好在执行完命令后就获取对应的结果值。我们同样可以通过
last_insert_id()获取自增的id值。
注意declare声明的局部变量仅使用于存储过程的begin,end块中,并且要在begin开始后就声明所需要的局部变量,不然会报出执行错误,如果想要在存储过程之外使用变量,可以使用以@开头的用户变量,下面是一个使用事务处理的例子。
参考文档
MySQL触发器创建相关文章推荐
- mysql 存储过程、触发器、视图、游标、分布式事务-之存储过程
- MySQL之视图、存储过程、触发器、函数、事务、动态执行SQL
- sql中的函数(4) 系统函数,事务、游标、存储过程及触发器
- MySQL 存储过程/游标/触发器/事务
- mysql 存储过程、触发器、视图、游标、分布式事务--之触发器
- mysql里的批处理(sql语句)、触发器、事务管理、存储过程
- mysql里的批处理(sql语句)、触发器、事务管理、存储过程
- sql中的函数(4) 系统函数,事务、游标、存储过程及触发器
- MySQL之21-29 重点: 视图,触发器,存储过程,游标,事务处理
- mysql视图,存储过程,游标,触发器,事务简单了解
- MySql基础教程二(视图,存储过程,游标,触发器,事务,权限,数据类型)
- MySql基础教程二(视图,存储过程,游标,触发器,事务,权限,数据类型)
- Mysql 视图 游标 触发器 存储过程 事务
- mysql-视图、触发器、事务、存储过程、流程控制
- MySQL存储过程例子,包含事务,参数,嵌套调用,游标,循环等
- mysql中索引,触发器,事务,存储引擎的理解
- 八、MySQL中的事务、锁和SQL_MODE - 系统的撸一遍MySQL
- mysql事务、触发器、视图、存储过程、函数
- sql不常用函数总结以及事务,增加,删除触发器
- MySQL存储过程例子,包含事务,参数,嵌套调用,游标,循环等