• MySQL 存储过程与事物


    一:存储过程
       存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能
     
      存储过程的好处
      1.由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。

      2.一个存储过程在程序在网络中交互时可以替代大堆的T-SQL语句,所以也能降低网络的通信量,提高通信速率。

      3.通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全。
     
     
     
    二:事物
       一个事务是一个连续的一组数据库操作,就好像它是一个单一的工作单元进行。换言之,永远不会是完整的事务,除非该组内的每个单独的操作是成功的。如果在事务的任何操作失败,则整个事务将失败。
     
      事务的特性,事务有以下四个标准属性的缩写ACID,通常被称为:

      原子性: 确保工作单元内的所有操作都成功完成,否则事务将被中止在故障点,和以前的操作将回滚到以前的状态。

      一致性: 确保数据库正确地改变状态后,成功提交的事务。

      隔离性: 使事务操作彼此独立的和透明的。

      持久性: 确保提交的事务的结果或效果的系统出现故障的情况下仍然存在。

     
     
    BEGIN
    
     
    	DECLARE result INTEGER DEFAULT 0;
       -- 标记是否出错
    	DECLARE t_error INTEGER DEFAULT 0;
     	
       -- 如果出现sql异常,则将t_error设置为1后继续执行后面的操作
      DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; 
      -- 显示的开启事务,启动它后,autocommit值会自动设置为0
      START TRANSACTION;  
    
    
    INSERT into shop_invoicerecords  (ordersjson,orderIdjson,totalmoney,sourcedomain,userId ,invoicejson,auditingstate ,invoiceAddrssjson,addDate )VALUES(_ordersjson,_orderIdjson,_totalmoney,_sourcedomain,_userId,_invoicejson,_auditingstate,_invoiceAddrssjson,_addDate );
    
      UPDATE shop_order set paymenttype=_paymentType where sourcedomain=_sourcedomain and  FIND_IN_SET(id,_orderId);
        -- 标记被改变,表示事务应该回滚 
    		IF t_error=1 THEN 
         -- 事务回滚 
    			 ROLLBACK;  
    		 set result=-1;
    		 ELSE 
         -- 事务提交
    			 COMMIT;  
    			 set result=1;
    		END IF; 
    	
    SELECT result;
    
    END
    

      

  • 相关阅读:
    nodejs
    jsp路径问题之base
    WordPress固定链接修改后访问文章页面404
    IntelliJ IDEA使用教程 (总目录篇)
    SQL SELECT DISTINCT 语句
    数据库的内连接、外连接(左外连接、右外连接、全外连接)以及交叉连接(转)
    SQL之group by 和 having
    SQL之group by
    通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。
    java.lang.NoClassDefFoundError: Could not initialize class com.demo.jdbc.utils.MyJdbcUtils
  • 原文地址:https://www.cnblogs.com/xiaoyaodijun/p/4425732.html
Copyright © 2020-2023  润新知