• MySql 事务+异常处理+异常抛出


    -- 测试用表
    -- innodb 支持事务
    CREATE TABLE `tb_test` (
      `id` INT(11) NOT NULL AUTO_INCREMENT,
      `name` VARCHAR(50) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=INNODB AUTO_INCREMENT=92 DEFAULT CHARSET=utf8;
    -- 测试用储存过程
    -- 通过插入相同的主键和插入NULL到非空字段中制造异常
    CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_test`()
    BEGIN
        -- 如果出现执行异常则结束后继的执行,并执行begin-end中的处理
        DECLARE EXIT HANDLER FOR SQLEXCEPTION 
        BEGIN
            -- 回滚事务
            ROLLBACK;
            -- 获取错误信息
            GET DIAGNOSTICS CONDITION 1 @p1=RETURNED_SQLSTATE,@p2= MESSAGE_TEXT;  
            -- 借“模拟”抛出异常
            RESIGNAL SET schema_name = 'mtt_dev',   
            table_name = 'tb_test',   
            message_text = @p2,  
            mysql_errno = @p1;
        END;
    
        START TRANSACTION;
    
        INSERT INTO `tb_test`(`name`)VALUES ('name');
        INSERT INTO `tb_test`(`name`)VALUES (NULL);
        INSERT INTO `tb_test`(`id`,`name`)VALUES (1,'name2');
        INSERT INTO `tb_test`(`id`,`name`)VALUES (1,'name3');    
            
        COMMIT;
    END$$
    
    DELIMITER ;
    -- 执行
    CALL sp_test();
  • 相关阅读:
    UI自动化测试框架
    Pyse( selenium-api的二次封装)
    Selenium之webdriverAPI
    selenium 基础之定位方式
    html综合应用
    html基础之js操作
    html基础之Dom操作
    (九)Locust 参数化
    (八)Locust 设置断言
    (七)Locust 的类和方法
  • 原文地址:https://www.cnblogs.com/xachary/p/4751263.html
Copyright © 2020-2023  润新知