CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

问个弱智的问题,什么叫‘回滚’?

楼主abcd4321(aaa)2003-11-03 10:48:57 在 MS-SQL Server / 基础类 提问

比如:‘事务被回滚’ 问题点数:10、回复次数:7Top

1 楼pengdali()回复于 2003-11-03 10:53:41 得分 2

begin   tran  
      insert   表   values(1)  
      insert   表   values(2)  
  rollback   tran  
   
  select   *   from   表   ---没有插入1和2。这就是回滚Top

2 楼txlicenhe(马可)回复于 2003-11-03 10:55:52 得分 0

begin   tran  
      insert   表   values(1)  
      insert   表   values(2)  
  rollback   tran  
   
  select   *   from   表   ---没有插入1和2。这就是回滚  
   
  从begin   tran开始到rollback   tran之间的所有操作都没有生效。  
  Top

3 楼txlicenhe(马可)回复于 2003-11-03 10:56:59 得分 5

ROLLBACK   TRANSACTION  
  将显式事务或隐性事务回滚到事务的起点或事务内的某个保存点。  
   
  语法  
  ROLLBACK   [   TRAN   [   SACTION   ]  
          [   transaction_name   |   @tran_name_variable  
          |   savepoint_name   |   @savepoint_variable   ]   ]  
   
  参数  
  transaction_name  
   
  是给   BEGIN   TRANSACTION   上的事务指派的名称。transaction_name   必须符合标识符规则,但只使用事务名称的前   32   个字符。嵌套事务时,transaction_name   必须是来自最远的   BEGIN   TRANSACTION   语句的名称。  
   
  @tran_name_variable  
   
  是用户定义的、含有有效事务名称的变量的名称。必须用   char、varchar、nchar   或   nvarchar   数据类型声明该变量。  
   
  savepoint_name  
   
  是来自   SAVE   TRANSACTION   语句的   savepoint_name。savepoint_name   必须符合标识符规则。当条件回滚只影响事务的一部分时使用   savepoint_name。  
   
  @savepoint_variable  
   
  是用户定义的、含有有效保存点名称的变量的名称。必须用   char、varchar、nchar   或   nvarchar   数据类型声明该变量。  
   
  注释  
  ROLLBACK   TRANSACTION   清除自事务的起点或到某个保存点所做的所有数据修改。ROLLBACK   还释放由事务控制的资源。  
   
  不带   savepoint_name   和   transaction_name   的   ROLLBACK   TRANSACTION   回滚到事务的起点。嵌套事务时,该语句将所有内层事务回滚到最远的   BEGIN   TRANSACTION   语句。在这两种情况下,ROLLBACK   TRANSACTION   均将   @@TRANCOUNT   系统函数减为   0。ROLLBACK   TRANSACTION   savepoint_name   不减少   @@TRANCOUNT。  
   
  ROLLBACK   TRANSACTION   语句若指定   savepoint_name   则不释放任何锁。  
   
  在由   BEGIN   DISTRIBUTED   TRANSACTION   显式启动或从本地事务升级而来的分布式事务中,ROLLBACK   TRANSACTION   不能引用   savepoint_name。  
   
  在执行   COMMIT   TRANSACTION   语句后不能回滚事务。  
   
  在事务内允许有重复的保存点名称,但   ROLLBACK   TRANSACTION   若使用重复的保存点名称,则只回滚到最近的使用该保存点名称的   SAVE   TRANSACTION。  
   
  在存储过程中,不带   savepoint_name   和   transaction_name   的   ROLLBACK   TRANSACTION   语句将所有语句回滚到最远的   BEGIN   TRANSACTION。在存储过程中,ROLLBACK   TRANSACTION   语句使   @@TRANCOUNT   在触发器完成时的值不同于调用该存储过程时的   @@TRANCOUNT   值,并且生成一个信息。该信息不影响后面的处理。  
   
  如果在触发器中发出   ROLLBACK   TRANSACTION:    
   
  将回滚对当前事务中的那一点所做的所有数据修改,包括触发器所做的修改。  
   
   
  触发器继续执行   ROLLBACK   语句之后的所有其余语句。如果这些语句中的任意语句修改数据,则不回滚这些修改。执行其余的语句不会激发嵌套触发器。  
   
   
  在批处理中,不执行所有位于激发触发器的语句之后的语句。    
  每次进入触发器,@@TRANCOUNT   就增加   1,即使在自动提交模式下也是如此。(系统将触发器视作隐性嵌套事务。)  
   
  在存储过程中,ROLLBACK   TRANSACTION   语句不影响调用该过程的批处理中的后续语句;将执行批处理中的后续语句。在触发器中,ROLLBACK   TRANSACTION   语句终止含有激发触发器的语句的批处理;不执行批处理中的后续语句。  
   
  ROLLBACK   TRANSACTION   语句不生成显示给用户的信息。如果在存储过程或触发器中需要警告,请使用   RAISERROR   或   PRINT   语句。RAISERROR   是用于指出错误的首选语句。  
   
  ROLLBACK   对游标的影响由下面三个规则定义:    
   
  当   CURSOR_CLOSE_ON_COMMIT   设置为   ON   时,ROLLBACK   关闭但不释放所有打开的游标。  
   
   
  当   CURSOR_CLOSE_ON_COMMIT   设置为   OFF   时,ROLLBACK   不影响任何打开的同步   STATIC   或   INSENSITIVE   游标,也不影响已完全填充的异步   STATIC   游标。将关闭但不释放任何其它类型的打开的游标。  
   
   
  对于导致终止批处理并生成内部回滚的错误,将释放在含有该错误语句的批处理内声明的所有游标。不论游标的类型或   CURSOR_CLOSE_ON_COMMIT   的设置,所有游标均将被释放,其中包括在该错误批处理所调用的存储过程内声明的游标。在该错误批处理之前的批处理内声明的游标以规则   1   和   2   为准。死锁错误就属于这类错误。在触发器中发出的   ROLLBACK   语句也自动生成这类错误。    
  权限  
  ROLLBACK   TRANSACTION   权限默认授予任何有效用户。  
  Top

4 楼zjcxc(邹建)回复于 2003-11-03 11:10:12 得分 1

回滚针对事务而言,将将一个事务开启后面的所做的操作全部取消.Top

5 楼abcd4321(aaa)回复于 2003-11-03 11:11:00 得分 0

谢谢大力,谢谢马可,回滚一般都是利用在分布式系统中么?随后马上给分Top

6 楼rollback(我好烦)回复于 2003-11-03 11:45:13 得分 1

简单的说就是在数据库中恢复到事务执行前的状态。  
  “回滚一般都是利用在分布式系统中么?”  
  也不一定在分布式系统中,单机的也一样Top

7 楼w_rose(w_rose)回复于 2003-11-03 16:58:00 得分 1

补充一点,也许有利于全面认识会论的含义!  
   
  如果你写一个很长(时间)的事务,然后在提交(Commit)之前瞬间立刻把服务器电源拔掉,然后重新插上电源启动服务器,你会发现数据库自动并且正确地回滚了。因此回滚操作是建立在“额外”利用一些技术保护数据库的数据和结构的基础上的。  
  Top

相关问题

  • 弱智问题
  • 弱智问题
  • 弱智问题!~··#·%#
  • 弱智问题~~~
  • 弱智问题
  • 弱智问题
  • 弱智问题!
  • 弱智问题!什么叫2M出口?
  • 弱智问题,什么叫做继承!~
  • SQL弱智问题

关键词

  • 语句
  • 存储过程
  • 执行
  • 数据
  • 分布式系统
  • 修改
  • 数据库
  • 事务
  • 触发器
  • rollback

得分解答快速导航

  • 帖主:abcd4321
  • pengdali
  • txlicenhe
  • zjcxc
  • rollback
  • w_rose

相关链接

  • SQL Server类图书

广告也精彩

反馈

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