zoukankan      html  css  js  c++  java
  • PHP 事务回滚实例

    #若已存在该表,就将其删除;否则创建新的表。
    DROP table IF EXISTS users;
    CREATE TABLE users(
    `user_name` varchar(5) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


    #若已存在该存储过程,就将其删除;否则创建新的存储过程
    DROP PROCEDURE IF EXISTS inserOrUpdate;
    CREATE PROCEDURE inserOrUpdate()
    BEGIN
    #--------------------
    #SQLEXCEPTION 对应存储过程执行中所有异常
    #@Auth:CHK
    #@time:2014-9-12 11:37:42
    #--------------------
    #如sql异常,事务回滚
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK;END;

    #开启事务
    START TRANSACTION;
    insert into users (user_name) values ('1');
    insert into users (user_name) values ('2');
    SELECT errno;
    select * from users;
    COMMIT;
    END;

    call inserOrUpdate();

    ---------------------------------------------------------------------------

    #若已存在该表,就将其删除;否则创建新的表。
    DROP table IF EXISTS users;
    CREATE TABLE users(
    `user_name` varchar(5) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    #若已存在该存储过程,就将其删除;否则创建新的存储过程
    DROP PROCEDURE IF EXISTS inserOrUpdate;
    CREATE PROCEDURE inserOrUpdate()
    BEGIN
    #--------------------
    #SQLEXCEPTION 对应存储过程执行中所有异常
    #@Auth:CHK
    #@time:2014-9-12 11:37:42
    #--------------------
    #标志是否出错
    DECLARE errno TINYINT DEFAULT '0';
    #如sql异常,将errno设置为1且后续执行退出
    #DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK;SET errno = 1; END;

    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
    BEGIN
     SET errno = 1;
    END;

    #开启事务
    START TRANSACTION;
    insert into users (user_name) values ('1');
    insert into users (user_name) values ('2');
    SELECT errno;
    select * from users;

    #errno为1,事务回滚sql
    IF errno=1 THEN
    ROLLBACK;
    ELSE
    COMMIT;
    END IF;
    END;

    call inserOrUpdate();

  • 相关阅读:
    Git:常用命令记录
    JS笔记(二):隐式转换
    vertical-align/line-height:水平垂直居中
    JS笔记(一):声明提升
    Array.prototype.sort():从一道面试题说起
    CSS笔记(一):选择器规范
    FreeCodeCamp:Profile Lookup
    tile_images_offset的简单使用
    vs2013快捷键等(转)
    Qt状态栏的使用(转)
  • 原文地址:https://www.cnblogs.com/chk520/p/3968087.html
Copyright © 2011-2022 走看看