SQL 事务(Transaction)「建议收藏」

SQL 事务(Transaction)「建议收藏」1、概念指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)由多个sql语句组成,必须作为一个整体执行这些sql语句作为一个整体一起向系统提交,要么都执行、要么都不执行语法步骤:开始事

大家好,又见面了,我是你们的朋友全栈君。

1、概念

指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)由多个sql语句组成,必须作为一个整体执行
这些sql语句作为一个整体一起向系统提交,要么都执行、要么都不执行

语法步骤:
开始事务:BEGIN TRANSACTION –开启事务
事务提交:COMMIT TRANSACTION –提交操作
事务回滚:ROLLBACK TRANSACTION –取消操作

 

2、建表

--建表
CREATE TABLE [Person](
[PersonId]    NVARCHAR(100) PRIMARY KEY ,        ---主键
[PersonName] NVARCHAR(100) NULL
)

 

 

3、事务

/*
    如果只有Begin TransAction和Commit TransAction 就算报错了,也是不会回滚的
    Select * From Person
*/
Begin TransAction
        Insert Into Person(PersonId,PersonName)Values('1','Name1')
        Insert Into Person(PersonId,PersonName)Values('1','Name1')
        Insert Into Person(PersonId,PersonName)Values('3','Name3')
Commit TransAction

/*
    如果只有Begin TransAction和RollBack TransAction 就算没报错了,还是会回滚的
    Select * From Person
*/
--清除数据
Delete Person
Begin TransAction
        Insert Into Person(PersonId,PersonName)Values('1','Name1')
        Insert Into Person(PersonId,PersonName)Values('1','Name1')
        Insert Into Person(PersonId,PersonName)Values('3','Name3')
RollBack TransAction

/*
    SET XACT_ABORT ON时,在事务中,若出现错误,系统即默认回滚事务,但只对非自定义错误有效
    SET XACT_ABORT OFF,默认值,在事务中,回滚一个语句还是整个事务视错误的严重程序而定,
    用户级错误一般不会回滚整个事务
    
    Select * From Person
*/
SET XACT_ABORT ON -- 打开
Begin TransAction
        Insert Into Person(PersonId,PersonName)Values('1','Name1')
        Insert Into Person(PersonId,PersonName)Values('1','Name1')
        Insert Into Person(PersonId,PersonName)Values('3','Name3')
Commit TransAction
SET XACT_ABORT OFF -- 关闭

/*
    Try Catch 配合事务使用    
    Select * From Person
*/
Begin Try
    Begin TransAction
        Insert Into Person(PersonId,PersonName)Values('1','Name1')
        Insert Into Person(PersonId,PersonName)Values('1','Name1')
        Insert Into Person(PersonId,PersonName)Values('3','Name3')
    Commit TransAction
End Try
Begin Catch
    Rollback TransAction
End Catch

/*
    使用全局变量@@Error 配合事务使用    
    Select * From Person
*/
DECLARE @tran_error int;
SET @tran_error = 0;
    Begin TransAction
        Insert Into Person(PersonId,PersonName)Values('1','Name1')
        SET @tran_error = @tran_error + @@ERROR;
        print(@tran_error);
        Insert Into Person(PersonId,PersonName)Values('1','Name1')
        SET @tran_error = @tran_error + @@ERROR;
        print(@tran_error);
        Insert Into Person(PersonId,PersonName)Values('3','Name3')
        SET @tran_error = @tran_error + @@ERROR;
        print(@tran_error);
IF(@tran_error > 0)
    BEGIN
        --执行出错,回滚事务
        ROLLBACK TransAction;
    END
ELSE
    BEGIN
        --没有异常,提交事务
        COMMIT TransAction;
    END

 

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154838.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux安装Tomcat最新版本

    Linux安装Tomcat最新版本Linux安装Tomcat最新版本1.Tomcat各版本选择2.下载启动1.Tomcat各版本选择官网介绍:https://tomcat.apache.org/whichversion.htmlServletJSPELWebSocketAuthentication(JASIC)ApacheTomcatVersionLatestReleasedVersionJava支持5.03.04.02.02.010.0.x10.0.58andla

    2022年6月1日
  • get请求的长度限制是多少_url长度限制为多少

    get请求的长度限制是多少_url长度限制为多少Httpget方法提交的数据大小长度并没有限制,Http协议规范没有对URL长度进行限制。目前说的get长度有限制,是特定的浏览器及服务器对它的限制。各种浏览器和服务器的最大处理能力如下:IE:对URL的最大限制为2083个字符,若超出这个数字,提交按钮没有任何反应。Firefox:对Firefox浏览器URL的长度限制为:65536个字符。Safari:URL最大长度限制为80000个字符。Opera:URL最大长度限制为190000个字符。Goog

    2022年8月24日
  • mysql数据库数据迁移操作「建议收藏」

    mysql数据库数据迁移操作「建议收藏」1.新建一个需要迁移的数据库2.进行数据迁移迁移步骤:1.工具–>点击数据传输,选择需要被导的数据库,和导入的数据库看到了吗以及导入成功了

    2022年7月3日
  • python机器学习手写算法系列——线性回归「建议收藏」

    python机器学习手写算法系列——线性回归「建议收藏」本文致力于手把手教你实现一个最简单的机器学习模型–一元线性回归模型。短短的14行代码,就实现了。希望读完以后,你也能自己实现它。并对线性回归有更好的了解,或者从不了解到了解。

    2022年8月21日
  • android apk防止反编译_android 反编译

    android apk防止反编译_android 反编译该楼层疑似违规已被系统折叠隐藏此楼查看此楼如题,用re文件浏览器看systemui.apk里面有layout,反编译出来就没了I:Baksmaling…I:Loadingresourcetable…W:Configflagssize>36.Exceedingbytes:0x9C00.W:Invalidconfigflagsdetected.Drop…

    2022年9月18日
  • voliate和synchronized「建议收藏」

    voliate和synchronized「建议收藏」线程安全考虑三个方面:原子性,可见性,有序性为什么使用voliate关键字?我们先来看正常情况下线程的执行

    2022年5月4日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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