zoukankan      html  css  js  c++  java
  • MYSQL 使用事务

    直接上代码,ID是唯一标识

    CREATE PROCEDURE PRO2()
      BEGIN
          DECLARE t_error INTEGER;
          DECLARE    CONTINUE HANDLER FOR SQLEXCEPTION SET t_error = 1;
     
          START TRANSACTION;
             INSERT INTO temp(ID,tempName) VALUES    ('1','2');
              INSERT INTO temp(ID,tempName)  VALUES    ('1', '3'); 
             IF t_error = 1 THEN
                 ROLLBACK;
             ELSE
                 COMMIT;
             END IF;
     END
    

     下面开始填坑

     1、在存储过程中使用变量时,会出现

      错误代码: 1337

      Variable or condition declaration after cursor or handler declaration

    游标(cursor)必须在声明处理程序之前被声明,并且变量和条件必须在声明游标或处理程序之前被声明。

    错误写法
    CREATE PROCEDURE PRO2()
      BEGIN
          DECLARE t_error INTEGER;
          DECLARE    CONTINUE HANDLER FOR SQLEXCEPTION SET t_error = 1;
     
           DECLARE t_text INT DEFAULT 0;-- 错误写法
    
          START TRANSACTION;
             INSERT INTO temp(ID,tempName) VALUES    ('1','2');
              INSERT INTO temp(ID,tempName)  VALUES    ('1', '3'); 
             IF t_error = 1 THEN
                 ROLLBACK;
             ELSE
                 COMMIT;
             END IF;
     END
    

     正确写法是需要将定义变量放在游标上

    
    CREATE PROCEDURE PRO2()
      BEGIN
    
          DECLARE t_text INT DEFAULT 0;-- 正确写法
    
         DECLARE t_error INTEGER;
          DECLARE    CONTINUE HANDLER FOR SQLEXCEPTION SET t_error = 1;
     
    	
    
          START TRANSACTION;
             INSERT INTO temp(ID,tempName) VALUES    ('1','2');
              INSERT INTO temp(ID,tempName)  VALUES    ('1', '3'); 
             IF t_error = 1 THEN
                 ROLLBACK;
             ELSE
                 COMMIT;
             END IF;
     END
    
  • 相关阅读:
    感知器算法--python实现
    PHP appserv + ZendStudio12.5.1 + 注册码
    第九周-每周例行报告
    第八周-每周例行报告
    感谢THUNDER
    第七周-每周例行报告
    第六周-每周例行报告
    第五周-每周例行报告
    第四周-四则运算试题生成
    第四周-单元测试
  • 原文地址:https://www.cnblogs.com/jerrywublogs/p/9406118.html
Copyright © 2011-2022 走看看