SQL_Server数据库事务

事务是一系列SQL操作的逻辑工作单元,一个逻辑工作单元必须有4个属性,原子性(Atomic)、一致性(Consistent)、隔离型 (Isolated)、持久性(Durable),简称为ACID

事务的基本控制语句

  1. BEGIN TRANSACTION 表示本地事务的开始;
  2. BEGIN DISTRIBUTED TRANSACTION表示分布式事务起始;
  3. COMMIT TRANSACTION表示事务的提交;
  4. ROLLBACK TRANSACTION表示事务的回滚;
  5. COMMIT事务的提交 与COMMIT TRANSACTION功能相同;
  6. ROLLBACK 事务的回滚与ROLLBACK TRANSACTION功能相同;
  7. SAVE TRANSACTION设置事务保存点;
  • 显示事务

所谓显示事务就是通过begin transaction 语句来显式启动事务,并由commit transaction语句进行提交begin transaction 之后的所有操作都在一个事务中一旦出现错误事务会进行回滚,将清除begin transaction之后所有操作,回到原点。

语法如下

begin {tran|transaction}[

{transaction_name |@tran_name_varible}

[with mark[‘description’]]

]

[;]

参数解析:

  1. begin 开始事务的关键词
  2. {tran|transaction},和begin一起表示事务开始
  3. transaction_name,事务名称
  4. @tran_name_varible,变量名称,将接受一个事务名称。该变量只能通过char,varchar,nchhar,nvarchar数据类型声明,
  5. 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行表示进入等待状态而查不到数据

  • 隐式事务

隐式事务需要用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行关闭隐式事务

 

 

 

你可能感兴趣的:(SQL_Server,数据库)