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初学者编写的事务处理代码存往往存在漏洞,本文我们介绍了三种不同的方法,举例说明了如何在存储过程事务处理中编写正确的代码.希望能够对您有所 ...
随机推荐
- 不错的flash,动漫,小插件小集
(来源:http://abowman.com/google-modules/) embed code <object width="220" height="166 ...
- Linux aclocal
一.简介 二.安装 三.常用指令 1)安装m4 aclocal -I m4 2)查看aclocal的路径 aclocal --print-ac-dir 四.常见问题 1) LIBTOOL is und ...
- 在Python命令行和VIM中自动补全
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1. VIM下的配置: wget https://github.com/rkulla/pydiction/arc ...
- 《100种过度医疗大公开》:转译自日文版,日文版依据的是美国的“Choosing Wisely”项目。三星推荐
本书转译自日文,日文版则是在美国的“Choosing Wisely”项目中选择了100个相对常见的过度医疗项目做解说.Choosing Wisely项目,是由美国多个专业医学组织发起的列出过度医疗项目 ...
- switch结构的用法
已知学生的名字和百分制分数.要求根据学生的百分制分数,分别采用"满分","优秀","良好","及格"和"不及格 ...
- android代码优化----ListView中自定义adapter的封装(ListView的模板写法)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 银狐云服务架构V0.1
首先这套程序是由JAVA开发的,为什么使用JAVA? 因为在本人的几年开发经历中,JDK在各种服务器上安装都很顺利, JAVA程序运行稳定,接口名不经常变动等,各种开源类库提升开发效率,给本人以信心, ...
- date时间函数
时间函数: date();和time();的相互转换 time(); 在PHP中单位是秒,在js中是毫秒. microtime(); 毫秒 date('Y-m-d H:i:s',time()); ...
- Hibernate 和快照
8.Oracle中的数据类型 9.Oracle中的伪列 Rowid和RowNum Rowid Rownum:在内存中形成一个不断裂的自增列 --最重要的.就是Oracle分页 我想要emp中的第二页数 ...
- hdu 1542 & & poj 1151
Atlantis Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...