CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

请教:有关SQL的事务处理

楼主vicentyan(菜鸟)2002-04-17 23:52:25 在 MS-SQL Server / 基础类 提问

第一个问题:  
  begin   tran  
      Exec   OneProduce  
   
      ......  
   
      if   @@error<>0  
      begin  
            Rollback   tran  
            return  
      end  
  commit   tran  
  不知如果存储过程中OneProduce出现错误,是否会导致Rollback?是否Rollback在OneProduce中所执行的程序?  
   
  第二个问题:  
  begin   tran  
   
      Insert   into   OneTable   (field1)   values   ('a')  
   
      ..........  
   
      if   @@error<>0  
      begin  
            Rollback   tran  
            return  
      end  
  commit   tran  
  假如OneTable中有一个Insert触发器,如果出现错误,那么Rollback是否Rollack触发器中所做的工作? 问题点数:60、回复次数:6Top

1 楼kaikaihe(开开)回复于 2002-04-18 08:19:50 得分 0

只有程序出错才会导致@@error<>0,此时程序直接返回调用处,所以不可能进行if   @@error   <>   0的判断Top

2 楼longj(大哥雁)回复于 2002-04-18 08:29:12 得分 20

ROLLBACK   TRANSACTION  
  (微軟的定義:)將外顯或隱含的交易復原至交易的開頭,或復原至交易中的安全點。  
   
  所以   嵌套   或   觸發   的交易應該算是   "隱含"的交易  
  Top

3 楼longj(大哥雁)回复于 2002-04-18 08:31:56 得分 0

此外,樓上的不對吧  
   
  @@ERROR  
  傳回上次執行   Transact-SQL   陳述式時的錯誤代碼。  
   
  當然,可以抓到錯誤,msdn都有這樣的例子Top

4 楼bluepower2008(蓝色力量)回复于 2002-04-18 10:34:51 得分 40

1。这种错误检测方式是有问题的,因为@@error返回的是最后的   Transact-SQL   语句执行情况,每一个   Transact-SQL   语句完成时,@@ERROR   的值都会改变。  
  所以如果即使OneProduce执行过程中有错误,如果在之后有其他语句正确执行,@@error变成0,将无法检测出错误。  
      另外,存储过程OneProduce中最好也要有错误检测代码,执行结果通过return返回,在存储过程之后紧接着进行判断,错误就回滚,这样应该会更好些。  
      记住一点:在   Transact-SQL   语句后,马上检测或使用   @@ERROR。或者在   Transact-SQL   语句完成后,马上把   @@ERROR   存储到一个整型变量中。此变量的值可供以后使用。    
   
  2。longj(龙九)说得没错,事务之间所有的操作都会被回滚,包括触发器的操作。Top

5 楼vicentyan(菜鸟)回复于 2002-04-18 22:12:05 得分 0

明白!谢谢各位大侠!Top

6 楼vicentyan(菜鸟)回复于 2002-04-18 22:17:33 得分 0

怎么无法给分?Top

相关问题

  • 有关事务处理的问题。
  • MS-sql事务处理的问题
  • 请教各位高手:有关事务处理的问题
  • 求救!有关Ejb中的事务处理!
  • 有关ADOConnection事务处理的问题,请高手指点!
  • 请教bcb中如何实现sql中的事务处理?
  • 在VB中,怎样对SQL进行事务处理?
  • 有个SQL事务处理方面的问题,请帮个忙。
  • ACCESS 事务处理 和表锁定的SQL语句
  • C#+SQL Sever 可以实现分布式事务处理吗?

关键词

  • 语句
  • 存储过程
  • 执行
  • sql
  • oneproduce
  • 触发器
  • 错误
  • rollback
  • tran
  • 交易

得分解答快速导航

  • 帖主:vicentyan
  • longj
  • bluepower2008

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo