美文网首页
数据库事务

数据库事务

作者: LoveTomato | 来源:发表于2017-09-12 11:19 被阅读0次

数据库事务

数据库事务定义

事物:是有一系列的逻辑语句组成的工作单元,事物保证这一系列语句要么成功执行所有语句,要么都不执行。

数据库事物语法

  1. 开启事物 begin transaction
  2. 结束事物
  • 提交事物:事物执行成功的时候commit提交事物
  • 事物回滚:事物执行失败时rollback回滚到事物执行前或事物所设置的某个保存点

例子

创建学生表

CREATE TABLE [dbo].[Student](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Number] [nvarchar](50) NULL,
    [Name] [nchar](10) NULL,
    [Age] [int] NULL
) 

事物插入两条数据,第二条为非法数据。执行结果两条数据都未插入。执行语句

declare @ErrorCount int =0;
begin transaction
insert into Student([Number] ,[Name],[Age])values('0521','jerry',5);
set @ErrorCount = @ErrorCount + @@ERROR
insert into Student([Number] ,[Name],[Age])values('0521','jerry','hello');
set @ErrorCount = @ErrorCount + @@ERROR
if @ErrorCount=0
begin
commit
end
else
begin
rollback
end

事物简单写法

一大部分书籍或博客都是如上写事物,执行成功commit失败rollback。其感觉好没有必要(认为在没有设回滚点时,
没必要用rollback),事务已经保证了逻辑单元,之前提交同样可以。

begin transaction
insert into Student([Number] ,[Name],[Age])values('0521','jerry',5);
insert into Student([Number] ,[Name],[Age])values('0521','jerry','hello');
commit

ADO.Net中应用

在ado.net 中感觉完全没有必要通过try{}catch(){}事物回滚。

var conn = System.Configuration.ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
string SQL1 = "insert into Student([Number] ,[Name],[Age])values('0521','jerry',5) ";
string SQL2 = "insert into Student([Number] ,[Name],[Age])values('0521','jerry','hello')";

using (SqlConnection connection = new SqlConnection(conn))
{
    connection.Open();
    SqlTransaction sqlTran = connection.BeginTransaction();
    SqlCommand command = connection.CreateCommand();
    command.Transaction = sqlTran;

    try
    {
        command.CommandText = SQL1;
        int rowsAffected = command.ExecuteNonQuery();
        command.CommandText = SQL2;
        rowsAffected += command.ExecuteNonQuery();
        transaction.Commit();
    }
    catch (Exception ex1)
    {
        //认为没有必要写Rollback
        //transaction.Rollback();
    }
}

不知观点是否正确,欢迎其他观点讨论。

相关文章

  • Django之数据库事务编程

    在了解 Django 数据库事务编程前有必要先了解下数据库事务。 数据库事务(transaction) 数据库事务...

  • 数据库笔记

    数据库 数据库⭐MySQL 默认存储引擎InnoDB(事务性存储引擎)一、事务 数据库事务? 数据库事务有什么作用...

  • 数据库事务简介(一)--- 所谓事务

    事务的概念 数据库事务简介(一)--- 所谓事务数据库事务简介(二)--- 故障恢复(未完成)数据库事务简介(三)...

  • Spring学习之事务管理基础

    Spring学习之事务管理基础 数据库事务相关概念 事务的定义 事务,一般指的是数据库事务,是指数据库操作的时候,...

  • 事务及事务隔离级别

    事务及事务隔离级别 什么是事务 事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务...

  • 搞懂Redis(四)-Redis事务

    事务本质:一组命令的集合 数据库事务与Redis事务 数据库事务数据库事务通过ACID(原子性.一致性.隔离性.持...

  • SpringBoot 数据库事务

    SpringBoot 数据库事务 事务: 数据库事务是 访问并可能更新 数据库中各种数据项的一个程序执行单元 事务...

  • SPRING的事务详解

    一、什么是事务 事务的概念 事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务的正...

  • 4.MySQL的事务与锁(1)

    本章要点 1.数据库事务2.MVCC 1 数据库事务 1.1 事务特性 事务具有的特性:ACID(Atomicit...

  • spring事务

    1、什么是事务事务和数据库操作有关,commit事务提交,rollback事务回滚事务作用:保证一组和数据库有关的...

网友评论

      本文标题: 数据库事务

      本文链接:https://www.haomeiwen.com/subject/leccsxtx.html