MySQL-SQL之游标,触发器和事务
来源:互联网 发布:淘宝店标 编辑:程序博客网 时间:2024/05/20 05:03
游标的出现使得对一个查询结果集的每一行结果能够更细粒度的操作,现在MySQL只支持在存储过程中定义存储过程。一个游标的使用过程是这样的:
* 使用 <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-SQL之游标,触发器和事务
- mysql 存储过程、触发器、视图、游标、分布式事务--之触发器
- sql 触发器和游标
- MySQL 之 触发器和事务控制
- mysql之事务、触发器
- mysql 存储过程、触发器、视图、游标、分布式事务-之存储过程
- mysql触发器和事务控制
- SQL数据库触发器和游标的使用
- SQL存储过程、触发器和游标
- MYSQL 存储过程,游标和触发器
- 触发器 事务控制 sql MODE mysql分区
- sql触发器和存储过程,索引,事务,游标,视图以及子查询等不同的参数、前后触等
- 游标,存储过程,触发器,事务
- sql游标,触发器
- SQL Server 事务、异常和游标
- SQL Server 事务、异常和游标
- SQL Server 事务、异常和游标
- SQL Server 事务、异常和游标
- 并发工具类(五) Phaser类
- dom4j使用XPath
- Fresco+RecyclerView+OkHttp+ButterKnife传值+条目点击跳转
- 消费者确认和生产者确认
- Serializable(一)--初步理解
- MySQL-SQL之游标,触发器和事务
- 两个月玩转大数据之HDFS
- 遇见心想事成的自己-张德芬思维导图
- 寻找特殊数
- UBOOT UART设置(基于mini2440)
- HDOJ1108最小公倍数
- 新SLA--总结
- 圆环进度条
- kubernetes1.8版本heapster部署