SQL 中事务的分类
2023-09-11 14:18:38 时间
先讲下事务执行流程:
BEGIN和COMMIT
PRINT @@TRANCOUNT --@@TRANCOUNT统计事务数量
BEGIN TRAN PRINT @@TRANCOUNT BEGIN TRAN PRINT @@TRANCOUNT COMMIT TRAN --只提交一个事务 PRINT @@TRANCOUNT COMMIT TRAN PRINT @@TRANCOUNT
结果:
ROLLBACK
PRINT @@TRANCOUNT BEGIN TRAN PRINT @@TRANCOUNT BEGIN TRAN PRINT @@TRANCOUNT ROLLBACK TRAN --回滚所有事务 PRINT @@TRANCOUNT
结果:
由上可知BEGIN TRAN 开始事务,使事务数量加一
COMMIT TRAN 使事务减一,提交最新开辟的事务
ROLLBACK 使事务数量直接减为0,也就是回滚
事务分类:
1.显示事务
2.隐式事务模式
3.自动提交事务
--显示事务
SET NOCOUNT ON SET IMPLICIT_TRANSACTIONS OFF --设置为显示事务模式,也就是自动提交模式 PRINT '显示事务开始前:'+CAST(@@TRANCOUNT AS varchar(10)) GO IF EXISTS(SELECT *FROM sys.tables WHERE name='Table1') DROP TABLE Table1 CREATE TABLE Table1 ( col1 int ) GO INSERT INTO Table1 VALUES(1) PRINT '插入数据时事务数:'+CAST(@@TRANCOUNT AS varchar(10)) BEGIN TRAN PRINT '开始事务时的事务数:'+CAST(@@TRANCOUNT AS varchar(10)) COMMIT TRAN GO PRINT '提交事务后的事务数:'+ CAST(@@TRANCOUNT AS varchar(10)) GO
结果:
--隐式事务模式
SET IMPLICIT_TRANSACTIONS ON --打开隐式事务模式 INSERT INTO Table1 VALUES(2) INSERT INTO Table1 VALUES(2) PRINT '插入数据时事务数:'+CAST(@@TRANCOUNT AS varchar(10)) COMMIT TRAN --如果不显示提交事务,那么如果下一条语句是(INSERT,DELECT,UPDATE,CREATE,TRUNCAST TABLE ,所有DROP,ALTER TABLE,GRINT,REVOK,SELECT)就会自动新建一个事务 PRINT '提交隐式事务后的事务数:'+CAST(@@TRANCOUNT AS varchar(10)) GO
结果:
--自动提交事务
--当设置IMPLICIY_TRANSACTIONS OFF 就恢复为自动提交模式 SET IMPLICIT_TRANSACTIONS OFF GO INSERT INTO Table1 VALUES(3) --没有错误自动提交 PRINT @@TRANCOUNT INSERT INTO Table1 VALUES(3,3) --有错误自动回滚 PRINT @@TRANCOUNT
结果:
--没有错误自动提交
--有错误自动回滚
相关文章
- MERGE Statement in SQL Explained
- An overview of the column level SQL Server encryption
- ssis SQL Server Integration Services
- SQL Server -- 随笔
- 本人收藏的Sql server经典t-sql语句(备忘录,持续更新中)
- 8种MySQL常见SQL错误用法详解
- 实战演练 | 使用纯 SQL 将表复制到新表
- 《SQL入门经典(第5版)》一一第6章 管理数据库事务
- 《SQL入门经典(第5版)》一一6.3 事务控制与数据库性能
- 使用PL/SQL将sql脚本数据导入数据库
- 在PL/SQL/sqlplus客户端 中如何让程序暂停几秒钟
- sql: MySQL and Microsoft SQL Server Stored Procedures IN, OUT using csharp code
- SQL基础知识笔记:概述(层状/网状/关系模型)、数据类型、操作数据库能力(DDL/DML/DQL)、关系模型(主键、联合主键、外键、外键约束-性能影响、一对一、一对多、多对多、索引、索引效率)、实用SQL语句、事务(四个特性、四种隔离级别)
- (4.61)sql server执行SQL遇到错误不中断
- SQL Server SSPI handshake failed报错,sql server修改windows账户密码的影响,sql server订阅发布客户端访问一直报错
- (4.52)解决sql server动态SQL中对表字段操作时需要频繁 ISNULL的问题
- (4.39)sql server如何配置分布式事务(MSDTC)
- sql server存储引擎启动错误(SQL Server could not spawn FRunCM thread)
- (4.19)sql server中的事务模式(隐式事务,显式事务,自动提交事务)
- sql server中使用xp_cmdshell
- sql server作业管理查看/进程管理查看命令
- SQL Server Profiler 跟踪某个数据库某张表sql语句
- SQL Server 跨数据库事务
- SQL事务用法begin tran,commit tran和rollback tran的用法
- SQL中替换函数replace()的使用方法
- 某音乐类App评论相关API的分析及SQL注入尝试