sql数据库回滚操作_sql回滚语句 rollback

sql数据库回滚操作_sql回滚语句 rollbackcreatetable testtable(idnvchart(50)primkey,namenvchart(50),remarknvchart(50))select*fromtesttable go BEGINTRY –SQLServer需要显示的定义开始一个事务.BEGINTRANSACTION;–插入2条同样的数据

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

create table testtable (

id nvchart(50) prim key,

name nvchart(50),

remark nvchart(50)

)

select * from testtable

 go

 BEGIN TRY

 — SQL Server 需要显示的定义 开始一个事务.

BEGIN TRANSACTION;

— 插入2条同样的数据,使主键重复,引发错误后回滚事务.

INSERT INTO testtable(id, name) VALUES (4, ‘FOUR’);

INSERT INTO testtable(id, name) VALUES (4, ‘FOUR’);

— 执行成功后,需要提交事务.

COMMIT;

END TRY

 BEGIN CATCH

 PRINT(‘Main.错误代码 = ‘ + STR(ERROR_NUMBER()));

 PRINT(‘Main.错误严重级别 = ‘ + STR(ERROR_SEVERITY()));

 PRINT(‘Main.错误状态代码 = ‘ + STR(ERROR_STATE()));

 PRINT(‘Main.错误信息 = ‘ + ERROR_MESSAGE());

 — 回滚事务

 ROLLBACK;

 END CATCH

 go

 select * from testtable;

 go

二、嵌套事务的层次是由@@TranCount全局变量反映出来的。

每一次Begin Transaction都会引起@@TranCount加1。而每一次Commit Transaction都会使@@TranCount减1,而RollBack Transaction会回滚所有的嵌套事务包括已经提交的事务和未提交的事务,而使@@TranCount置0。

例如

 
 BEGIN TRAN –@@TRANCOUNT值为0
      SELECT @@TRANCOUNT –值为1
          BEGIN TRAN
                SELECT @@TRANCOUNT –值为2
          COMMIT TRAN
          SELECT @@TRANCOUNT –值为1
  ROLLBACK TRAN
  SELECT @@TRANCOUNT –值为0
    
三、

在SQL Server中使用rollback会回滚所有的未提交事务状态,但是有些时候我们只需要回滚部分语句,把不需要回滚的语句提到事务外面来,虽然是个方法,但是却破坏了事务的ACID。

其实我们可以使用SQL Server中的Savepoints来解决上述问题。

示例如下:

1.先建立测试表: 
CREATE TABLE [dbo].[ttt]( 
    [Id] [int] NULL, 
    [mark] [int] NULL 
)

 

2.SQL 语句 
begin tran 
    insert into ttt values(3,’3′); 
save tran point1 
    insert into ttt values(4,’4′);

rollback tran point1

commit

 

执行结果如下: 
Id    mark 
3    3

可见,虽然3,4都在一个事务中,但是由于使用了SavePoints,所以3被提交了,4被回滚了。



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/179247.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 如何产生ioexception_结合实例论述控制过程

    如何产生ioexception_结合实例论述控制过程IOCP结合AcceptEx实例

  • 宝塔面板无法卸载php,宝塔面板如何卸载「建议收藏」

    宝塔面板无法卸载php,宝塔面板如何卸载「建议收藏」windows面板卸载1.打开宝塔面板windows版安装目录,路径为:面板安装数据盘:\BtSoft\ServerAdmin2.运行UnInstall.exe开始面板卸载3.最后使用注册表清理软件或者360清理,清理注册表才可以清除服务文件。在卸载完成后,重启服务器以确保卸载干净。linux面板卸载方法一、脚本卸载1.你需要先在面板中将通过面板安装的所有软件卸载,如nginx、mysql、…

  • jstat命令详解[通俗易懂]

    jstat命令详解[通俗易懂]Jstat是JDK自带的一个轻量级小工具。全称“JavaVirtualMachinestatisticsmonitoringtool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heapsize和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。jstat工具特别强大,有众多的可

  • Linux stat函数_c++ stringbuffer

    Linux stat函数_c++ stringbuffer之前写过一篇关于stat命令的博客,介绍了stat命令的使用和输出信息表示,今天又见到了stat函数,因为输出原因,准备整理一下。stat函数介绍  根据《UNIX环境高级编程》中对于stat函数的解释,stat函数和stat命令一样,都是返回该文件的详细信息。函数定义为:#include<sys/types.h>#include&lt…

  • MFC界面库BCGControlBar的介绍

    MFC界面库BCGControlBar的介绍英文原文:http://www.bcgsoft.com/bcgcontrolbarpro.htmBCGControlBar是MFC的一个扩展库其英文全称是”BusinessComponentsGalleryControlBar”,它允许你去创建像完全自定义的像MicrosoftOffice2000/XP/2003/2007/2010/2013and VisualStudio的界

  • 最小二乘法简明推导过程

    最小二乘法简明推导过程最小二乘法推导最小二乘法公式J(θ)=1m∑i=1m(y(i)−hθ(x(i)))2J(\theta)=\frac1m\sum_{i=1}^m(y^{(i)}-h_{\theta}(x^{(i)}))^2J(θ)=m1​i=1∑m​(y(i)−hθ​(x(i)))2证明1.假设设数据中未被考虑进来的特征和人为无法控制的噪声为ε\varepsilonε。即y(i)=θTx(i)…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号