打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SQL SERVER事务处理(七)
SQL SERVER事务处理(七)时间:2009-05-31 15:21:36来源:网络 作者:未知 点击:203次 begin tran t1
----In the first trans .
Insert into demo2(name,age) values('lis',1)
---Second Trans begin transaction t2
insert into demo values('BB','B term')
commit transaction t2
----In the first
begin tran t1
----In the first trans .
Insert into demo2(name,age) values('lis',1)
---Second Trans begin transaction t2
insert into demo values('BB','B term')
commit transaction t2
----In the first trans .
Insert into demo2(name,age) values('lis',2)
rollback transaction t1
Note:
在一系列嵌套的事务中用一个事务名给多个事务命名对该事务没有什么影响。系统仅登记第一个(最外部的)事务名。回滚到其它任何名字(有效的保存点名除外)都会产生错误。
事实上,任何在回滚之前执行的语句都没有在错误发生时回滚。这语句仅当外层的事务回滚时才会进行回滚。
例:内部事务回滚SQL server 报错。
begin tran t1
Insert into demo2(name,age) values('lis',1)
---Second Trans
--Server: Msg 6401, Level 16, State 1, Line 6
---Cannot roll back t2. No transaction or savepoint of that name was found.
begin transaction t2
insert into demo values('BB','B term')
rollback transaction t2
----In the first trans .
Insert into demo2(name,age) values('lis',2)
commit transaction t1
例: 内部事务提交SQL server 不会报错。
begin tran t1
Insert into demo2(name,age) values('lis',1)
---Second Trans no error
begin transaction t2
insert into demo values('BB','B term')
commit transaction t2
----In the first trans .
Insert into demo2(name,age) values('lis',2)
commit transaction t1
SQL Server 的隔离级别:
1: 设置TimeOut 参数
Set Lock_TimeOut 5000
被锁超时5秒将自动解锁
Set Lock_TimeOut 0
产立即解锁,返回Error 默认为-1,无限等待
2:
(SET TRANSACTION ISOLATION LEVEL
{ READ COMMITTED
| READ UNCOMMITTED
| REPEATABLE READ | SERIALIZABLE})
READ COMMITTED
指定在读取数据时控制共享锁以避免脏读,但数据可在事务结束前更改,从而产生不可重复读取或幻像数据。该选项是SQL Server 的默认值。
避免脏读,并在其他session 在事务中不能对已有数据进行修改。共享锁。
READ UNCOMMITTED
执行脏读或 0 级隔离锁定,这表示不发出共享锁,也不接受排它锁。当设置该选项时,可以对数据执行未提交读或脏读;在事务结束前可以更改数据内的数值,行也可以出现在数据集中或从数据集消失。该选项的作用与在事务内所有语句中的所有表上设置 NOLOCK 相同。这是四个隔离级别中限制最小的级别。
REPEATABLE READ
锁定查询中使用的所有数据以防止其他用户更新数据,但是其他用户可以将新的幻像行插入数据集,且幻像行包括在当前事务的后续读取中。因为并发低于默认隔离级别,所以应只在必要时才使用该选项。
SERIALIZABLE
在数据集上放置一个范围锁,以防止其他用户在事务完成之前更新数据集或将行插入数据集内。这是四个隔离级别中限制最大的级别。因为并发级别较低,所以应只在必要时才使用该选项。该选项的作用与在事务内所有 SELECT 语句中的所有表上设置 HOLDLOCK 相同。
 
本篇文章来源于:开发学院 http://edu.codepub.com   原文链接:http://edu.codepub.com/2009/0531/5058.php
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
SQL Server数据库事务处理详解
SQL Server 事务相关的存储过程
浅析SQL存储过程和事务处理
C#事务
Oracle PL/SQL开发基础(第二十七弹:事务处理简介)
Oracle与SQLServer事务处理的比较
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服