mySql 事务,游标以及循环

对于Mysql 我也是个初学者,在这里就写写我知道的皮毛,若有错误直管拍砖,我也好学习学习,先谢过!

首先 mysql 没有 Sql sever 一样的 begin tran end tran begin catch end catch 。mysql  的事务机制 我理解就是捕捉错误句柄,如果存在就应该rollback,不存在就可以commit.不废话上代码:

 1 DECLARE sys_error INT DEFAULT 0; //定义一个表示出错返回的错误变量
 2
 3  DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET sys_error=1;  //定义设置如果有错误句柄 就将 sys_error 设置为1
 4
 5  START TRANSACTION; //开始事务
 6
 7
 8 /* 写处理逻辑的语句 */
 9
10    IF sys_error=1 THEN
11         ROLLBACK; //有错误回滚
12         ELSE
13         COMMIT; //没有错误提交
14         END IF;       

下面说下 mysql 的游标和循环

其实游标也是循环的读取数据所以我下面就是说下循环的问题

Mysql 的循环是否结束其实也是通过标记的,什么意思我举个例子 当我们有两层循环(嵌套)

一般 是:

     DECLARE  i INT DEFAULT 1;
     DECLARE  j  INT DEFAULT 1;
     WHILE i<5
     DO
        BEGIN             SET j=1;
             WHILE j<4
             DO
               BEGIN
                  SELECT i,j;
                  SET j=j+1;
               END ;
             END WHILE;
             SET i=i+1;
        END ;
     END WHILE;

  这样 只执行了  i=1,J=1,2,3 的结果  i=2 后面的都没有执行

mysql 中的循环是通过状态句柄控制的,跟事务的类似,不废话了上代码

  

     DECLARE Done INT DEFAULT 0;
     DECLARE  i INT DEFAULT 1;
     DECLARE  j  INT DEFAULT 1;
     DECLARE CONTINUE HANDLER FOR SQLSTATE ‘02000‘ SET Done = 1; //个人理解就是循环结束了就设置成1了,就像sql 里游标读取状态(@@FETCH_STATUS )至于 02000 我只能猜是循环有关的状态码。
     WHILE i<5
     DO
        BEGIN
            SET j=1;
             WHILE j<4
             DO
               BEGIN
                  SELECT i,j;
                  SET j=j+1;
               END ;
             END WHILE;
             SET i=i+1;
             SET Done =0;  //如果少这一步,外层循环也会直接退出 就是会像上面的结果一样。
        END ;
     END WHILE;

  好了大概就讲这些,还有一个就是在mysql 的局部变量和全局变量,特别是用户第三方的mysql 工具客户端,在客户端一样没有断开的情况下,全局变量一直保存着原来的值。具体说法可以去找mysql的资料

时间: 2024-10-26 21:41:37

mySql 事务,游标以及循环的相关文章

MySql使用游标Cursor循环(While)更新数据

#要修改的变量 DECLARE var_ID VARCHAR(50) DEFAULT ''; #需要修改的数据的数量 DECLARE var_UpdateCount INT; #当前循环次数 DECLARE var_WhileTimes INT; #定义游标 DECLARE var_Cur CURSOR FOR SELECT id FROM table_Name; #打开游标 OPEN var_Cur; #将游标的数据进行赋值 FETCH var_Cur INTO var_ID; #获取循环次数

mysql 事务、游标

mysql 事务 在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务,所以很多情况下我们都使用innodb引擎. 事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行. 一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性).Consistency(稳定性).Isolation(隔离性).Durability(可靠性) 1.事务的原子性:一组事务,要么成功:要么撤回. 2.稳定性 : 有非法数据(外键约束之类),事务撤回.

mysql中游标在存储过程中的详细用法

昨天写的一个东东,分享下给大家. drop PROCEDURE  if exists sp_cleanUserData; CREATE  PROCEDURE `sp_cleanUserData`() BEGIN /*定义游标*/ declare v_dt bigint(20) default 0 ; declare v_num INT DEFAULT 0; /*游标循环到末尾时给定义的常量赋值*/ declare cur_userId   CURSOR FOR select  userId fr

MySQL中游标使用以及读取文本数据

前言 之前一直没有接触数据库的学习,只是本科时候修了一本数据库基本知识的课.当时只对C++感兴趣,天真的认为其它的课都没有用,数据库也是半懂不懂,胡乱就考试过了.现在学习大数据分析,接触了数据挖掘,才感觉到数据库是不可跨越的坎.直到现在才感觉到<操作系统>.<编译原理>.<计算机组成原理>等等课程的重要性.在浩瀚的知识面前,个人是非常渺小的.掌握了一种思想之后,任何事情都不困难,困难的是你是否真的静下心看一看帮助文档.认真的Google.静心.静气.认真.执着. 游标-

day20——安装客户端、数据库连接、mysql事务、mysql操作数据

python的mysql操作 mysql数据库是最流行的数据库之一,所以对于python操作mysql的了解是必不可少的.Python标准数据库接口为Python DB-API, Python DB-API为开发人员提供了数据库应用 编程接口.参考地址:https://wiki.python.org/moin/DatabaseInterfaces,你可以查看python支持数据库的详细列表.不同的数据库需要下载不同的DB API模块.DB-API是一个规范.它定义了一系列必须的对象和数据库存取方

Python 执行 MySQL 事务

一.MySQL 事务 事务就是指逻辑上的一组 SQL 操作,组成这组操作的各个 SQL 语句,执行时要么全成功要么全失败. 举个例子,小明给小红转账100元,转账过程实际上就是小明的账户减少100元,小红的账户增加100元,对应的SQL语句为: update account set money=money-5 where name='xiaoming';update account set money=money+5 where name='xiaohong'; 上述的两条SQL操作,在事务中的

Mysql 事务日志(Ib_logfile)

mysql的innodb中事务日志ib_logfile(0/1) 概念:事务日志或称redo日志,在mysql中默认以ib_logfile0,ib_logfile1名称存在,可以手工修改参数,调节开启几组日志来服务于当前mysql数据库,mysql采用顺序,循环写方式,每开启一个事务时,会把一些相关信息记录事务日志中(记录对数据文件数据修改的物理位置或叫做偏移量);这个系列文件个数由参数innodb_log_files_in_group控制,若设置为4,则命名为ib_logfile0~3.这些文

MySQL使用游标

MySQL检所操作返回一组称为结果集的行,游标是一个存储在MySQL服务器上的数据库查询,它不是一条select语句,而是被该语句所检索出来的结果集.只能用于存出过程. 声明(定义)游标,这个过程没有实际的检索数据,只是定义使用的select语句. 打开游标,用前面定义的select语句把数据检索出来 用于填有数据的游标,根据需要检索出各行. 游标使用结束时关闭游标. 声明游标 DECLARE cursor_avgScore CURSOR 打开游标 OPEN cursor_avgScore ;

数据库-mysql事务

MySQL 事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务. 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行. 事务用来管理 insert,update,delete 语句 一般来说,事务是必须满足4个条件(A