• 技术文章 >数据库 >mysql教程

    mysql实现事务的提交和回滚实例_MySQL

    2016-06-01 13:08:35原创456
    mysql创建存储过程的官方语法为:

    复制代码 代码如下:
    START TRANSACTION | BEGIN [WORK]
    COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
    ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
    SET AUTOCOMMIT = {0 | 1}

    我这里要说明的mysql事务处理多个SQL语句的回滚情况。比如说在一个存储过程中启动一个事务,这个事务同时往三个表中插入数据,每插完一张表需要判断其是否操作成功,如果不成功则需要回滚,最后一张表判断其插入成功之后commit。这里需要注意的是不能直接使用事务的collback,这样是不能实现回滚的或者说可能出现意外的错误。

    那么我们需要的是一个条件判断,比如loop,因为MySql默认是会自动提交的,所以我们不用担心rollback之后条件退出而没有commit。

    具体mysql语句如下:

    复制代码 代码如下:
    begin
    loop_lable: loop
    start transaction;
    insert into table1(f_user_id) values(user_id);
    if row_count() < 1 then
    set @ret = -1;
    rollback;
    leave loop_label;
    end if;
    insert into table2(f_user_id) values(user_id);
    if row_count() < 1 then
    set @ret = -1;
    rollback;
    leave loop_label;
    end if;
    insert into table3(f_user_id) values(user_id);
    if row_count() < 1 then
    set @ret = -1;
    rollback;
    leave loop_label;
    else
    set @ret = 0;
    commit;
    leave loop_label;
    end if;
    end loop;
    select @ret;
    end

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:
    上一篇:mysql加密_MySQL 下一篇:mysql 学习小札(3)-- 数据的处理_MySQL
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• 怎么解决启动mysql的1069错误• 怎么修改mysql服务路径• oracle怎么转移表的表空间• mysql中pid文件丢失怎么办• mysql多个条件怎么查询
    1/1

    PHP中文网