sql server 事务处理
1.显示事务
它是通过 BEGIN TRANSACTION 、 COMMIT TRANSACTION 、ROLLBACK TRANSACTION 、 SAVE TRANSACTION 等Transact-SQL语句来完成的。
use test
go /*启动一个事务向student表中插入一个记录*/
begin transaction
insert into student values(100,'陈浩','男',19)
commit tran select * from student
go
/*启动一个事务向student表中删除一个记录,然后回滚该事务*/
begin transaction
delete student where sno=100
rollback select * from student --由于回滚该事务,因此student表中没有插入记录。
go
/*在事务内设置保存点*/
begin transaction mytran --启动事务
select * from student
save transaction s1 --设置保存点。
insert into student values(200,'王洪','男',22) --插入另一个学生的记录
rollback transaction s1 --事务回滚到保存点s1
commit transaction
go
select * from student --陈浩插入到表中而王洪没有插入到表中
|
操作 |
相应的SQL语句 |
|
创建数据库 |
CREATE DATABASE |
|
修改数据库 |
ALTER DATABASE |
|
删除数据库 |
DROP DATABASE |
|
恢复数据库 |
RESTORE DATABASE |
|
加载数据库 |
LOAD DATABASE |
|
备份日志文件 |
BACKUP LOG |
|
恢复日志文件 |
RESTORE LOG |
|
更新统计数据 |
UPDATE STATISTICS |
|
授权操作 |
GRANT |
|
复制事务日志 |
DUMP TRANSACTION |
|
磁盘初始化 |
DISK INIT |
|
更新使用sp_configure系统存储过程更改的配置选项的当前配置值 |
RECONFIGURE |
2.自动提交事务
3.隐式事务

/*演示在将IMPLICIT_TRANSACTIONS设置为ON时显式或隐式启动事务。
使用@@trancount函数返回当前连接的活动事务数。 */
set nocount on
print cast(@@trancount as char(5))
create table table1(a int)
insert table1 values(1)
go
print cast(@@trancount as char(5)) print '使用显式事务'
begin tran
insert table1 values(2)
print '当前连接的活动事务数:'+cast(@@trancount as char(5))
commit tran print '当前连接的活动事务数:'+cast(@@trancount as char(5))
go print '设置 implicit_transactions为on'
set implicit_transactions on
go
print '使用隐式事务'
insert into table1 values(4) --这里不需要begin tran语句来定义事务的启动
print '当前连接的活动事务数:'+ cast(@@trancount as char(5))
commit tran
print '当前连接的活动事务数:'+ cast(@@trancount as char(5))
go drop table table1
set implicit_transactions off /*BEGIN TRANSACTION 语句使 @@TRANCOUNT 递增 1。
ROLLBACK TRANSACTION 将 @@TRANCOUNT 递减为 0,
但 ROLLBACK TRANSACTION savepoint_name 语句并不影响
@@TRANCOUNT 值。COMMIT TRANSACTION 将 @@TRANCOUNT 递减 1。*/
数据的锁定
1.通过Set lock_timeout 设置事务被阻塞的最长时间;通过@@lock_timeout查看。例如:
/*查看@@lock_timeout*/
print @@lock_timeout --LOCKTIMEOUT 的缺省值是 -1,这意味着将没有锁超时 set lock_timeout 1800
print @@lock_timeout
2. 定义事务隔离级别(4种) set transaction isolation level ... 。
3. 锁定提示。例如:
/*在select,insert,update和delete等语句中使用表级锁定提示*/
set transaction isolation level serializable
begin tran
select * from student with(tablock)
exec sp_lock
commit tran select object_name(1013578649)
sql server 事务处理的更多相关文章
- SQL SERVER事务处理
SQL SERVER事务处理 一.事务定义: 事务是单个的工作单元.如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中的永久组成部分. 如果事务遇到错误且必须取消或回滚,则所有 ...
- SQL Server 事务处理 回滚事务
--创建表: GO CREATE TABLE [dbo].[tb1]( [Id] [int] NOT NULL, [c1] [nvarchar](50) NULL, [c2] [datetime] N ...
- Oracle与SQL Server事务处理的比较
事务处理是所有大型数据库产品的一个关键问题,各数据库厂商都在这个方面花费了很大精力,不同的事务处理方式会导致数据库性能和功能上的巨大差异.事务处理也是数据库管理员与数据库应用程序开发人员必须深刻理解的 ...
- c# + Sql server 事务处理
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位. 通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便 ...
- SQL SERVER 数据库实用SQL语句
--查看指定表的外键约束 select * from sysobjects where parent_obj in( select id from sysobjects where name='表名' ...
- SQL Server 2000中查询表名,列名及字段类型
经常碰到一些忘记表名称的情况,此时只记得个大概,此时可通过查询系统表Sysobjects找到所要的表名,如要查找包含用户的表名,可通过以下SQL语句实现, Select * From sysobjec ...
- SQL点滴9—SQL Server中的事务处理以及SSIS中的内建事务
原文:SQL点滴9-SQL Server中的事务处理以及SSIS中的内建事务 我们可以把SSIS中的整个package包含在一个事务中,但是如果在package的执行过程中有一个表需要锁定应该怎么处理 ...
- TransactionScope事务处理方法介绍及.NET Core中的注意事项 SQL Server数据库漏洞评估了解一下 预热ASP.NET MVC 的VIEW [AUTOMAPPER]反射自动注册AUTOMAPPER PROFILE
TransactionScope事务处理方法介绍及.NET Core中的注意事项 作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/10170712.ht ...
- SQL Server在存储过程中编写事务处理代码的三种方法
SQL Server中数据库事务处理是相当有用的,鉴于很多SQL初学者编写的事务处理代码存往往存在漏洞,本文我们介绍了三种不同的方法,举例说明了如何在存储过程事务处理中编写正确的代码.希望能够对您有所 ...
随机推荐
- Boost.log
=================================版权声明================================= 版权声明:本文为博主原创文章 未经许可不得转载 请通过右 ...
- Linux 多线程信号量同步
PV原子操作 P操作: 如果有可用的资源(信号量值>0),则此操作所在的进程占用一个资源(此时信号量值减1,进入临界区代码); 如果没有可用的资源(信号量值=0),则此操作所在的进程被阻塞直到系 ...
- mkfifo
管道是Linux的十种文件类型之一,使用管道通信本质上还是以文件作为通信的媒介 有名管道+无名管道=管道 有名管道(FIFO文件):就是 有文件名的管道, 可以用于任意两个进程间的通信 无名管道(pi ...
- 其他(一)Visual Studio 自动排版快捷键
自动对齐快捷键为:ctrl+k+d 按快捷键前,请先将需要对齐的代码选中.不选中是不行的.
- x01.Lab.StreetApp: MVVM
Store App 特别适用于 MVVM 模式.由于要用到 SQLite,Bing Maps,所以第一步从网上搜索并安装这两个扩展.很难想象在智能手机上运行 SQL Server 这种巨无霸型数据库, ...
- linux 接口地址全部清除才清理从此接口发出的下一跳路由
接口地址全部清除才清理从此接口发出的下一跳路由 如: eth7配置两个地址 eth7: 192.168.1.1 10.1.1.1 添加一条路由: route add -net 2.2.2.0/24 g ...
- Redhat下如何搭建NFS
环境: OS:Red Hat Linux As 5 服务器ip:192.168.50.199客户端ip:192.168.50.200 1.服务器上创建共享目录同时修改权限mkdir /bak1/nfs ...
- plsql+绿色版oracle连接远程数据库配置及提示缺少msvcr71.dll解决方法
之前一直用的sqldeveloper连接oracle数据库,这个免费而且也是官方出品,除了体积略大启动略慢外,也没什么不好的.. 一次偶然机会决定试一下plsql,整理一下安装资料,需要本地oracl ...
- monkeyrunner之环境搭建及实例(三)
Monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器. 一.Monkeyrunner简介 1.MOnkeyrunner相对Mo ...
- python中strip,lstrip,rstrip简介
一.起因 今天在做角色控制中,有一个地方用到rstrip,判断用户请求的url是否与数据库对应可用权限中url相符. if request.path == x.url or request.path. ...