zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    团队博客-十日冲刺6
    04构建之法阅读笔记之一
    Java基础-面向对象三大特性
    剑指 Offer 38. 字符串的排列
    Java基础:包装类 装箱/拆箱 Integer
    剑指 Offer 34. 二叉树中和为某一值的路径
    LeetCode 树:105. 从前序与中序遍历序列构造二叉树
    Java基础:类型
    Java基础:值传递和引用传递
    数据结构:图的基本知识
  • 原文地址:https://www.cnblogs.com/huyueping/p/5113004.html
Copyright © 2011-2022 走看看