码迷,mamicode.com
首页 > 数据库 > 详细

SQL SERVER 事务相关

时间:2018-08-24 14:53:06      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:commit   ssms   sql   font   arc   nsa   nvarchar   prim   rollback   

1 准备数据 及 涉及到的几个设置

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED  --设置事务会话的隔离等级(默认值为 READ UNCOMMITTED ),只对当前进程有效(就是说只对打开SSMS当前查询窗口有效,再打开另一个查询窗口就无效了)

SET XACT_ABORT OFF  --设置精确终止(暂且这么叫)开关(默认值为 OFF)   ,只对当前进程有效(就是说只对打开SSMS当前窗口有效,再打开另一个就无效了)

 

IF NOT OBJECT_ID(Score) IS NULL  
DROP TABLE [Score]  
GO  
IF NOT OBJECT_ID(Student) IS NULL  
DROP TABLE [Student]  
GO  
  
CREATE TABLE Student  
(stuid int NOT NULL PRIMARY KEY,  
stuName Nvarchar(20)  
)  
CREATE TABLE Score  
(stuid int NOT NULL REFERENCES Student(stuid),--外键  
scoreValue int  
)  
GO  
  
INSERT INTO Student VALUES (101,胡一刀)  
INSERT INTO Student VALUES (102,袁承志)  
INSERT INTO Student VALUES (103,陈家洛)  
INSERT INTO student VALUES (104,张三丰)  
GO  

2 回滚事例

--最简单回滚
--下面语句可以分开执行,一次执行一行

BEGIN TRAN --开启事务,设置事务开始点
/*
命令已成功完成。
*/

SELECT * FROM score
/*
(0 行受影响)
说明:因为表里没有数据,所以查询返回条数为0.
*/

INSERT INTO score VALUES (101, 59)  --插入数据,此时如果查看消息:(1 行受影响)
/*
(1 行受影响)
*/

SELECT * FROM score
/*
stuid    scoreValue
101      59

(1 行受影响)
说明:本进程内(本查询窗口)可以查到此条已经插入的数据,但是其它进程(查询窗口)是无法查到数据的。因为现在事务并没有提交,SQLSERVER 的默认隔离级别为 READ COMMITTED ,此隔离级别在其它进行中是无法读取到未提交数据的。

*/


ROLLBACK
/*
命令已成功完成。
说明:回滚未提交事务。
*/


SELECT * FROM score
/*
(0 行受影响)
因为已经回滚了,所以查不出数据了。
*/

 

SQL SERVER 事务相关

标签:commit   ssms   sql   font   arc   nsa   nvarchar   prim   rollback   

原文地址:https://www.cnblogs.com/BinBinGo/p/9529553.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!