sql事务

  事务是一组数据单元操作的集合,这个集合是一个不可分割的逻辑单元,不是全部执行就是通通不执行。

组成事务的数据库单元只有两种:读取和写入。

T-SQL语言的事务是由BEGIN TRAN命令语句开始,一直执行到COMMIN TRAN提交事务或ROLLBACK TRAN回滚事务为止。期间使用@@ERROR系统函数检查数据库单元操作是否成功。

 

事务的四大特性(简称ACID):

1,原子性(Atomicity):将事务过程的所有数据库单元操作视为同一项工作,不是全部执行完,就是通通不执行,将它视为一个不可分割的逻辑单元。

2,一致性(Consistency):当事务更改或更新数据库的数据后,在事务之前和之后,数据库的数据仍然需要满足完整性限制条件,维持数据的唯一性。

3,隔离性(Isolation):当执行多个事务时,虽然事务是并发执行,不过,事务之间应该满足独立性。也就是说,一个事务不会影响到其它事务的执行结果或被其它事务所干扰。

4,永久性(Durability):当事务完成执行事务提交后,其执行操作所更动的数据已经永久改变,数据库管理系统不只需要将数据从数据库缓冲区实际写入存储装置,而且不会因任何错误,导致数据的流失。

 

一般情况下,事务放在存储过程里使用,如下例子:

CREATE PROCEDURE Tran_NewsKPI
@NewsID int = 0
AS

BEGIN TRAN Tran_Click
declare @tran_error int;--标记执行事务时的错误个数
DECLARE @clicknum int;
SET @clicknum =
(SELECT ISNULL(click, 0) AS Expr1
FROM T_News
WHERE (id = @NewsID));
set @tran_error = 0;

if(@clicknum = 0)
begin
UPDATE T_News SET click = 0 WHERE (id = @NewsID);
set @tran_error = @tran_error + @@ERROR;
end

UPDATE T_News SET click = click + 1 WHERE (id = @NewsID);
set @tran_error = @tran_error + @@ERROR;

if(@tran_error > 0)
 begin
 --出错,事务回滚
  rollback tran;
 select 0;
 end
else
 begin

  commit tran;--执行成功,提交事务

  select 1;
 end

 

转载于:https://www.cnblogs.com/huyueping/p/5113004.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值