SQL事务

  • SQL事务已关闭评论
  • 825 views
  • A+
所属分类:数据库
广告也精彩
本文预计阅读时间 7 分钟
事务的类型:显示,自动提交,隐型模式启动事务
显示事务:是通过发出BEGIN TRANSACTION语句显示启动事务。BEGIN TRANSACTION语句用于标记一个显示本地事务的起始点。
使得@@TRANCOUNT的值按1递增。
--系统函数@@RANCOUNT返回当前连接的活动事务数目
自动提交:语句提交
隐型提交:通过设置SET TMPLICIT_TRANSACTIONS { ON | OFF },每一个Transact_SQL语句将自动启动一个新事务。
使用SET TMPLICIT_TRANSACTIONS开启隐式事务
CREATE TABLE Tabletest(Coll INT PRIMARY KEY ,Col2 CHAR(5)) --创建表,自动提交事务
SET IMPLICIT_TRANSACTIONS ON --开启隐式事务
INSERT INTO Tabletest VALUES(1,'aaa') --向表中添加数据
INSERT INTO Tabletest VALUES(2,'bbb') --向表中添加数据
ROLLBACK TRANSACTION --回滚事务
INSERT INTO Tabletest VALUES(3,'ccc') --向表中添加数据
INSERT INTO Tabletest VALUES(4,'ddd') --向表中添加数据
COMMIT TRANSACTION
SET IMPLICIT_TRANSACTIONS OFF --关闭隐式事务
INSERT INTO Tabletest VALUES(5,'eee') --向表中添加数据
SELECT * FROM Tabletest

SQL事务

嵌套事务的提交与@@TRANCOUNT值
CREATE TABLE TestTran(Cola INT PRIMARY KEY,Colb CHAR(5)) --创建表
BEGIN TRANSACTION OuterTran --开始事务,此时@@TRANCOUNT值为1
PRINT '执行事务OuterTran后,@@TRANCOUNT的值为:'+CAST(@@TRANCOUNT AS NVARCHAR(10))
INSERT INTO TestTran VALUES(1,'aaa') --向表中添加数据
BEGIN TRANSACTION Inner1 --开始事务,此时@@TRANCOUNT值为2
PRINT '执行事务Inner1后,@@TRANCOUNT的值为:'+CAST(@@TRANCOUNT AS NVARCHAR(10))
INSERT INTO TestTran VALUES(2,'bbb') --向表中添加数据
BEGIN TRANSACTION Inner2 --开始事务,此时@@TRANCOUNT值为3
PRINT '执行事务Inner2后,@@TRANCOUNT的值为:'+CAST(@@TRANCOUNT AS NVARCHAR(10))
INSERT INTO TestTran VALUES(3,'ccc') --向表中添加数据
COMMIT TRANSACTION Inner2 --提交事务Inner2
PRINT '提交Inner2后,@@TRANCOUNT的值为:'+CAST(@@TRANCOUNT AS NVARCHAR(10))
COMMIT TRANSACTION Inner1 --提交事务Inner1
PRINT '提交Inner1后,@@TRANCOUNT的值为:'+CAST(@@TRANCOUNT AS NVARCHAR(10))
COMMIT TRANSACTION OuterTran --提交事务OuterTran
PRINT '提交OuterTran后,@@TRANCOUNT的值为:'+CAST(@@TRANCOUNT AS NVARCHAR(10))

SQL事务 SELECT * FROM TestTran
SQL事务

回滚事务---------ROLLBACK TRANSACTION 回滚等于取消一切操作,@@TRANCOUNT为0
设置事务的保存点-------SAVE TRANSACTION
CREATE TABLE TestTran3(Cola INT PRIMARY KEY,Colb CHAR(5)) --创建表
BEGIN TRANSACTION --开始事务,此时@@TRANCOUNT值为1
PRINT '开始事务后,@@TRANCOUNT的值为:'+CAST(@@TRANCOUNT AS NVARCHAR(10))
INSERT INTO TestTran3 VALUES(1,'aaa') --向表中添加数据
SAVE TRANSACTION save1 --设置保存save1
INSERT INTO TestTran3 VALUES(2,'bbb') --向表中添加数据
SAVE TRANSACTION save2 --设置保存save2
INSERT INTO TestTran3 VALUES(3,'ccc') --向表中添加数据
ROLLBACK TRANSACTION save2 --会滚到保存点save2
PRINT '会滚到保存点save2后,@@TRANCOUNT的值为:'+CAST(@@TRANCOUNT AS NVARCHAR(10))
INSERT INTO TestTran3 VALUES(4,'ddd') --向表中添加数据

COMMIT TRANSACTION --提交事务
PRINT '提交事务后,@@TRANCOUNT的值为:'+CAST(@@TRANCOUNT AS NVARCHAR(10))

SQL事务 SELECT * FROM TestTran3

SQL事务

weinxin
九四君博客站长语录
欢迎关注订阅‘爱君娱乐科技’微信公众号,本站的资源也会上传到‘爱君娱乐科技’公众号。
广告也精彩