SQLServer之创建隐式事务
隐式事务创建注意事项
IMPLICIT_TRANSACTIONS为 ON 时,系统处于“隐式”事务模式。 这意味着如果 @@TRANCOUNT = 0,下列任一 Transact-SQL 语句都会开始新事务。 这等同于先执行一个不可见的 BEGIN TRANSACTION。
IMPLICIT_TRANSACTIONS为 OFF 时,上述每个 T-SQL 语句都受一个不可见的 BEGIN TRANSACTION 和一个不可见的 COMMIT TRANSACTION 语句限制。为 OFF 时,事务模式为自动提交。 如果 T-SQL 代码发出了一个可见 BEGIN TRANSACTION,那么事务模式为显式。
有几点需要说明:
事务模式为隐式时,如果 @@trancount > 0,则不会发出不可见的 BEGIN TRANSACTION。 但是,任何显式 BEGIN TRANSACTION 语句都会递增 @@TRANCOUNT。
INSERT 语句和工作单元中的其他任务完成后,须发出 COMMIT TRANSACTION 语句,直到 @@TRANCOUNT 递减为 0。 也可以发出一个 ROLLBACK TRANSACTION。
不会从表中选择的 SELECT 语句不会启动隐式事务。 例如,
SELECT GETDATE();或SELECT 1, 'ABC';不需要事务。由于 ANSI 默认值的原因,可能会意外打开隐式事务。 有关详细信息,请参阅 SET ANSI_DEFAULTS (Transact-SQL).
IMPLICIT_TRANSACTIONS ON 不常用。 大多数情况下,IMPLICIT_TRANSACTIONS 为 ON,是因为选择了 SET ANSI_DEFAULTS ON。
进行连接时, SQL Server Native Client OLE DB Provider for SQL Server 和 SQL Server Native Client ODBC 驱动程序会自动将 IMPLICIT_TRANSACTIONS 设置为 OFF。 对于与 SQLClient 托管提供程序进行连接,及通过 HTTP 端点接收的 SOAP 请求,SET IMPLICIT_TRANSACTIONS 默认为 OFF。
使用T-SQL脚本创建隐式事务
语法:
--声明数据库引用
use 数据库名称;
go
--设置隐式事务开关
set implicit_transactions { on | off };
--事务业务逻辑
事务操作内容;
--查看是否有事务开启
select @@trancount;
--必须提交或者回滚事务
{ commit | rollback } { tran | transaction};
语法解析:
--set implicit_transactions { on | off };
--为 ON 时,系统处于“隐式”事务模式。 这意味着如果 @@TRANCOUNT = 0
--为 OFF 时,上述每个 T-SQL 语句都受一个不可见的 BEGIN TRANSACTION 和一个不可见的 COMMIT TRANSACTION 语句限制。 为 OFF 时,事务模式为自动提交。
--用@@TRANCOUNT来测试是否已经打开一个事务.
---SELECT @@TRANCOUNT结果是1,意思是当前连接已经打开了一个事务。0的意思是当前没有事务,一个大于1的数的意思是有嵌套事务。
--@@TRANCOUNT的值是1,这个时候必须提交或者回滚事务,不然等到会话结束,表仍然是锁住,会造成阻塞。
--{ commit | rollback } { tran | transaction};
--commit { tran | transaction} 提交事务。
--rollback { tran | transaction} 回滚事务。
示例:
--声明数据库引用
use testss;
go
--查看implicit_transactions状态
--declare @implicit_transactions varchar(10)='OFF';
--if((2&@@OPTIONS)=2) set @implicit_transactions='ON';
--select @implicit_transactions as implicit_transactions;
--设置隐式事务状态打开
set implicit_transactions on;
go
--开启一个隐式事务
insert into test1(name,sex,age,height) values('测试隐式事务','女','20','180');
--判断是否有隐式事务开启,如果有则提交,没有则回滚
if (select @@TRANCOUNT) is not null and (select @@TRANCOUNT)=1
commit tran;
else
rollback transaction;
go
示例结果:依次显示事务执行结果和查询事务执行结果。


SQLServer之创建隐式事务的更多相关文章
- SQLServer之创建显式事务
显式事务定义 显式事务以 BEGIN TRANSACTION 语句开始,并以 COMMIT 或 ROLLBACK 语句结束. 备注 BEGIN TRANSACTION 使 @@TRANCOUNT 按 ...
- SQL Server显式事务与隐式事务
事务是单个的工作单元.如果某一事务成功,则在该事务中进行的所有数据修改均会提交,成为数据库中的永久组成部分.如果事务遇到错误且必须取消或回滚,则所有数据库修改均被清除. SQL Server中有一下几 ...
- 2018-02-17 中文代码示例[译]Scala中创建隐式函数
前言: 学习Scala时, 顺便翻译一下自己有兴趣的文章. 代码中所有命名都中文化了(不是翻译). 比如原文用的是甜甜圈的例子. 原文: Scala Tutorial - Learn How To C ...
- (4.19)sql server中的事务模式(隐式事务,显式事务,自动提交事务)
(4.19)sql server中的事务模式(隐式事务,显式事务,自动提交事务) 1.概念:隐式事务,显式事务,自动提交事务 2.操作:如何设置事务模式 3.存储过程中的事务 XACT_ABORT 1 ...
- MYSQL中默认隐式事务及利用事务DML
一:默认情况下,MySQL采用autocommit模式运行.这意味着,当您执行一个用于更新(修改)表的语句之后,MySQL立刻把更新存储到磁盘中.默认级别为不可重复读. 二:会造成隐式提交的语句以下语 ...
- 基于TransactionScope类的分布式隐式事务
System.Transactions 命名空间中除了上一节中提到的基于 Transaction 类的显式编程模型,还提供使用 TransactionScope 类的隐式编程模型,它与显示编程模型相比 ...
- CALayer的隐式动画和显式动画
隐式事务 任何对于CALayer属性的修改,都是隐式事务,都会有动画效果.这样的事务会在run-loop中被提交. - (void)viewDidLoad { //初始化一个layer,添加到主视图 ...
- grid - 隐式网格
当网格项目确认在显式网格之外时就会创建隐性网格,当没有足够的空间或者显式的网格轨道来设置网格项目,此时网格项目就会自动创建隐式网格. 隐式网格可以定义:grid-auto-rows.grid-auto ...
- C#隐式类型局部变量&隐式类型数组
[隐式类型局部变量] 可以赋予局部变量推断“类型”var 而不是显式类型.var 关键字指示编译器根据初始化语句右侧的表达式推断变量的类型.推断类型可以是内置类型.匿名类型.用户定义类型或 .NET ...
随机推荐
- Java中的数组添加,数组相关代码
private static void demo() { // TODO Auto-generated method stub /** * @author square 凉 * @功能 实 ...
- mongodb高级聚合查询
在工作中会经常遇到一些mongodb的聚合操作,特此总结下.mongo存储的可以是复杂类型,比如数组.对象等mysql不善于处理的文档型结构,并且聚合的操作也比mysql复杂很多. 注:本文基于 mo ...
- Python—day17时间模块、系统模块、递推遍历、序列化
一.time'''时间戳(timestamp):time.time()延迟线程的运行:time.sleep(secs)(指定时间戳下的)当前时区时间:time.localtime([secs])(指定 ...
- JVM基础系列第9讲:JVM垃圾回收器
前面文章中,我们介绍了 Java 虚拟机的内存结构,Java 虚拟机的垃圾回收机制,那么这篇文章我们说说具体执行垃圾回收的垃圾回收器. 总的来说,Java 虚拟机的垃圾回收器可以分为四大类别:串行回收 ...
- PHP-mysqli 出错回显
面向对象风格 <?php $conn = new mysqli("localhost", "username", "password" ...
- Nginx学习系列二Linux下Nginx实现负载均衡
关于在本地虚拟机(VMware 14)下安装Linux同时安装Nginx,请参考Nginx学习系列之搭建环境 1.启动Nginx 在Nginx安装成功的前提下,启动Nginx 已root模式登陆(权限 ...
- 并发编程(二)—— CountDownLatch、CyclicBarrier和Semaphore
本文将讲解CountDownLatch,CyclicBarrier和Semaphore这三个并发包里面的辅助类. CountDownLatch 正如每个Java文档所描述的那样,CountDownLa ...
- 为了学好Java,我尝试了这 6 个方法
阅读本文大概需要 5 分钟. 教练,我想学Java! 怎么学Java,一个简单的命题,我自己也折腾了好几年,现在虽不能说是Java高手,但也算是小有所成,至少还不至于搞不懂一些基本概念和技术原理. 从 ...
- Chapter 5 Blood Type——8
He chuckled. "What are your plans?" 他窃笑道.“那你的计划是什么?” I blushed. I had been vacillating dur ...
- shell之最常用的服务脚本
任务需求:以最简单的方式管理 /usr/local/php7/sbin/php-fpm -c /usr/local/php7/etc/php.ini 这条命令 包括启动停止重启 使用技术:shell脚 ...