隐式事务,显式事务,自动提交事务

1,事务在数据库中主要用于保证数据的一致性,防止出现错误数据
事务的基本控制语句
BEGIN TRANSACTION 表示本地事务的开始
BEGIN DISTRIBUTED TRANSACTION表示分布式事务起始
COMMIT TRANSACTION表示事务的提交
ROLLBACK TRANSACTION表示事务的回滚
COMMIT事务的提交 与COMMIT TRANSACTION功能相同
ROLLBACK 事务的回滚与ROLLBACK TRANSACTION功能相同
SAVE TRANSACTION设置事务保存点
创建表语句

CREATE TABLE ORDERINFO(
CUSTOMID INT NULL,
PRODUCTID INT NULL,
ORDERQUANTITY VARCHAR(100) NULL
)
SELECT * FROM  ORDERINFO
显式事务
–通过begin transaction 语句来显式启动事务,并由commit transaction语句进行提交
—begin transaction 之后的所有操作都在一个事务中一旦出现错误事务会进行回滚,将清除begin transaction之后所有操作,回到原点
–语法如下
begin {tran|transaction}[
{transaction_name |@tran_name_varible}
[with mark[‘description’]]
]
[;]
–begin 开始事务的关键词
–{tran|transaction},和begin一起表示事务开始
–transaction_name,事务名称
–@tran_name_varible,变量名称,将接受一个事务名称。该变量只能通过char,varchar,nchhar,nvarchar数据类型声明,
–with mark 在日志中标记事务 description 是描述该标记的字符串
–下面介绍如何使用显式事务

BEGIN TRANSACTION TR_ORDERINFO
INSERT INTO [dbo].[ORDERINFO] (CUSTOMID,PRODUCTID,ORDERQUANTITY)
VALUES(14,11110,'10')  
GO
UPDATE ORDERINFO SET PRODUCTID=120000 WHERE CUSTOMID=14
GO
COMMIT TRANSACTION TR_ORDERINFO

–第1行表示显式的开启一个事务 事务名称为 TR_ORDERINFO
–第2-3行表示为 ORDERINFO表加入数据
–第5行表示在表中修改数据
–第7行表示提交事务 如果没有第7行表示进入等待状态而查不到数据

–2隐式事务
–隐式事务需要用T_语句才能打开,打开隐式事务的语句是 
SET IMPLICIT_TRANSACTIONS ON
–一旦隐式事务打开,数据库实例第一次执行alert table,insert,create,open,delete,revoke,drop,select,fetch,truncate table,grant,update语句时,会自动开启一个事务,开启的事务需要利用commit或rollback结束;当事务结束时,一旦运行以上类型的语句,会再次自动开启一个新的事务,
–这样就形成了一个事务链

SET IMPLICIT_TRANSACTIONS ON 
INSERT INTO [dbo].[ORDERINFO] (CUSTOMID,PRODUCTID,ORDERQUANTITY)
VALUES(16,21110,'20')  
GO
UPDATE ORDERINFO SET PRODUCTID=220000 WHERE CUSTOMID=16
GO
COMMIT 
SET IMPLICIT_TRANSACTIONS OFF

–第1行表示开启隐式事务
–第2-3行表示为 ORDERINFO表加入数据
–第5行表示在表中修改数据
–第7行表示提交事务 第8行关闭隐式事务

–3,自动提交事务
–自动提交事务是sqlserver默认模式,该类型不需要开发人员手工做任何操作,每个单独的T_SQL语句都在其完成后自动提交,如果出现错误则回滚,
–所以开发人员无法对其严格控制不适合大规模导入,不适合业务关联数据录用,如果完成一项业务需要3句语句,当第二条出错时,第一条无法撤销,所以无法保证事务一致型
 

猜你喜欢

转载自blog.csdn.net/f110300641/article/details/83988364
今日推荐