`

Sql事物

    博客分类:
  • SQL
阅读更多

给你一个例子:  
   
   BEGIN   TRAN     --开始一个事务  
    INSERT   INTO   PRODUCT(PRODUCTID,   PRODUCTNAME)   VALUES("0001",   "KEYBOARD")  
    UPDATE   PRODUCT   SET   PRICE=12   WHERE   PRODUCTID=   "0002"  
    IF   (@ERROR>0)    
     ROLLBACK     --执行语句失败,则回滚到开始处  
    ELSE  
   COMMIT   --提交事务

没有关系的,你只要加入一个BEGINTRANSCATION和一个ENDTRANSCATION.数据库会将这里面的SQL处理批量执行,当中间出现一条错误时你可以ROLLBACK,这样就会全部都取消掉,也就是说都不会执行。

在数据库中使用事务:  
  SET   XACT_ABORT   ON     --当产生错误时自动回滚事务  
  BEGIN   TRAN  
  ......  
  COMMIT   TRAN  
   
  也可以在代码中使用事务:  
  SqlTransaction   tran   =   sqlConn.BeginTransaction();  
  try  
  {  
      ......  
      tran.Commit();  
  }  
  catch  
  {  
      tran.Rollback();  
  }  
 

很多数据库操作需要进行事务,Asp.net下面进行事务大致有3个层次:      
  (1)存储过程层次的事务      
  (2)Ado.Net层次的事务      
  (3)Asp.Net页面层次的事务      
  下面分别举例:      
  首先建立trantest表,字段id(int),test(char)      
  为id设置主键(利用主键是不允许重复的特性进行事务测试)      
  假设数据库内存在记录id=1,test='test'    
  (1)      
  CREATE   PROCEDURE   Tran1      
  as      
  begin   tran      
  set   xact_abort   on    
  Insert   Into   trantest   (id,test)values(1,'test')      
  Insert   Into   trantest   (id,test)values(2,'test')      
  commit   tran      
  GO      
  set   xact_abort   on     表示遇到错误立即回滚    
  当然你也可以这么写    
  CREATE   PROCEDURE   tran1    
  as    
  begin   tran    
  insert   into   trantest(id,test)values(1,'test')    
  if(@@error<>0)    
    rollback   tran    
  else    
    begin    
      insert   into   trantest(id,test)values(2,'test')    
      if(@@error<>0)    
        rollback   tran    
      else    
        commit   tran    
    end    
  GO    
   
  (2)      
  SqlConnection   conn=new   SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);      
  SqlCommand   cmd1=new   SqlCommand("Insert   Into   trantest   (id,test)values(1,'test')",conn);      
  SqlCommand   cmd2=new   SqlCommand("Insert   Into   trantest   (id,test)values(1,'test')",conn);      
  conn.Open();      
  SqlTransaction   tran=conn.BeginTransaction();      
  cmd1.Transaction=tran;      
  cmd2.Transaction=tran;      
  try      
  {      
    cmd1.ExecuteNonQuery();      
    cmd2.ExecuteNonQuery();      
    tran.Commit();      
  }      
  catch(SqlException   except)      
  {      
    tran.Rollback();      
    Response.Write(except.Message);      
  }      
  finally      
  {      
    conn.Close();      
  }      
   
  (3)      
  添加引用System.EnterpriseServices.dll      
  using   System.EnterpriseServices;      
   
  随便建立一个按钮,在按钮中进行如下操作:    
  try      
  {      
    work1();      
    work2();      
    ContextUtil.SetComplete();      
  }      
  catch(System.Exception   except)      
  {      
    ContextUtil.SetAbort();      
    Response.Write(except.Message);      
  }      
   
  然后在页面中添加2个操作,模拟一下在逻辑层调用不同类中的操作的情况      
  private   void   work1()      
      {      
        SqlConnection   conn=new   SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);      
        SqlCommand   cmd1=new   SqlCommand("Insert   Into   trantest   (id,test)values(1,'test')",conn);      
        conn.Open();      
        cmd1.ExecuteNonQuery();      
        conn.Close();      
      }      
   
      private   void   work2()      
      {      
        SqlConnection   conn=new   SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);      
        SqlCommand   cmd2=new   SqlCommand("Insert   Into   trantest   (id,test)values(2,'test')",conn);      
        conn.Open();      
        cmd2.ExecuteNonQuery();      
        conn.Close();      
      }      
   
  修改前台页面在<%Page后面添加   Transaction="Required"   即可    

方法3:

把所有的SQL都放到一个事务中  
  BEGINTRANSCATION  
        。。。  
  ENDTRANSCATION

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Come_On_steven/archive/2009/05/19/4200382.aspx

分享到:
评论

相关推荐

    SQL事物处理教程

    sql事物的处理教程,比较适合新手

    关于SQL事物的简单介绍

    SQL事务是数据库管理系统中的核心概念,用于确保一组数据库操作的完整性和一致性。它们是数据库操作的基本工作单元,可以理解为一系列相互关联的SQL语句,这些语句作为一个整体被执行。事务的四个基本属性,即ACID...

    sql 事物处理

    事物处理,简单的事务处理介绍,适合新手,事物处理,简单的事务处理介绍,适合新手,

    数据库,索引,主键,约束,sql

    在数据库中,索引、主键和约束是至关重要的概念,而SQL(Structured Query Language)则是与数据库交互的语言。 首先,索引是提高数据库查询速度的关键工具。它们类似于书籍的目录,使得数据库能够快速定位到特定的...

    数据库sqlserver攻关

    ### SQL事物的讲解 事务是SQL Server中执行数据库操作的基本单位,保证了一系列操作要么全部成功,要么全部失败。事务具有ACID属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性...

    sql中的事物

    sql中的事物部分,十分详细,个人觉得很有用哦。

    Oracle与SQLServer的SQL语法差异

    Oracle与SQLServer的SQL语法差异,用简单易懂的语言和实例对Oracle和Sql Server语法之间的差异进行了对比分析,更加适用于入门的人

    sql server事务日志解析工具

    每个 SQL Server 数据库都有事务日志,用于记录所有事务以及每个事务所做的数据库修改。 你是否想读取和分析SQL Server日志文件 (.ldf) ?正找不到合适的软件呢?以上一款强大的sql数据库日志分析工具,可以轻松打开...

    SqlHelper基类.rar

    /// 一个存在的 sql 事物处理 /// &lt;param name="commandType"&gt;SqlCommand命令类型 (存储过程, T-SQL语句, 等等。) /// 存储过程的名字或者 T-SQL 语句 /// 以数组形式提供SqlCommand命令中用到的参数列表 ///...

    SQL Server Native Client 10.0.zip

    它支持多种高级特性,包括SQL Server特有的事物隔离级别、游标、预编译的SQL语句(存储过程)以及批量数据传输等。 在Django这样的Python Web框架中,如果需要连接到SQL Server 10.0,SQL Server Native Client可以...

    SybaseHelper.cs

    /// 一个存在的 sql 事物处理 /// &lt;param name="commandType"&gt;AseCommand命令类型 (存储过程, T-SQL语句, 等等。) /// 存储过程的名字或者 T-SQL 语句 /// 以数组形式提供AseCommand命令中用到的参数列表 ///...

    Log Explorer for SQL Server v4.22 含注册机

    服务器端代理是保存在SQLServer主机中的一个只读存储过程,他的作用是接受客户端请求,读取在线事物日志块并通过网络传给客户端软件,由客户端软件来读取这些原始的数据块来完成Log Explore所提供的所有功能。...

    SQL Server实验指导 课后答案

    sql server实验指导 第三版 清华大学出版社,马晓梅 课后实验答案

    SQL server大作业

    在ER模型中,实体可以是人、事物或概念,属性是描述实体的特性,关系则连接两个或多个实体。通过ER图,我们可以清晰地看到数据之间的联系,为后续的逻辑结构设计打下基础。 逻辑结构设计通常基于ER模型转换为关系...

    Log Explorer for SQL Server v4.22

    服务器端代理是保存在SQLServer主机中的一个只读存储过程,他的作用是接受客户端请求,读取在线事物日志块并通过网络传给客户端软件,由客户端软件来读取这些原始的数据块来完成Log Explore所提供的所有功能。...

    C#中的操作数据库的类 sql access sqlite 支持事物

    本文将深入探讨C#中针对SQL Server、Access以及SQLite这三种不同数据库的处理方式,并着重讲解它们如何支持事务处理。 首先,`SQL Server`是Microsoft提供的一个强大、高性能的关系型数据库管理系统,C#中通常通过`...

    sql server服务的开启与关闭

    SQL Server是Microsoft公司推出的一种关系型数据库管理系统,广泛应用于企业级数据存储和管理。在日常运维中,管理和控制SQL Server服务的启动与关闭是至关重要的,因为它直接影响到系统的性能、资源利用率以及安全...

    SQL 宝典 国外经典 中文版

    然后说明数据处理和事物控制(包括插入、删除和更新记录等),以及数据检索和传送(涉及SELECT语言和SQL函数等);最后介绍数据库安全和数据库访问等其他内容。本书始终围绕SQL标准和三大主要RDBMS(Oracle、IBM DB2...

    SQL Sever DBA必备的数据库基础知识

    10. SQL Server 事物和锁机制:DBA需要理解事务的ACID属性,以及SQL Server如何使用锁机制来维护数据的一致性和防止并发问题。 11. 分布式查询和调优:在使用分布式数据库时,DBA需要掌握分布式查询的编写方法、...

    SQL CLR扩展DLL 在MS-SQL Server 环境中实现完整的文件、目录操作

    包括:VB.Net2010源代码(工程文件)、DLL文件、CHM帮助文件。CHM帮助文件中有各函数详细的说明,以及...我经过5~6年的使用,实现用SQL管理复杂的事物,通过SQL Server数据库连接各种应用软件,组装成复杂的应用方案!

Global site tag (gtag.js) - Google Analytics