SQL数据库—<…>事务--简单学习

事务

  • 一、什么是事务
    能够保证数据的一致性的代码控制,要么执行提交,要么滚回事务的初始状态
  • 二、事务的四大特性:ACID
    A:原子性-------事务不可拆开,要么执行要么回滚无中间状态
    C:一致性-------数据前后一致性
    I:隔离性-------事务在执行的过程中是不予许外界干扰的
    D:持有性-------存在硬盘上的

开始事务:begin transaction 或者 begin tran  或者 start transaction [事务名]
提交事务:commit[事务名]
回滚事务:rollback

@@error :返回上一个SQL语句的错误代号 ,没错误返回0

例如:
法一:使用@@ERROR和if判断来使用事务

declare @t int        --记录累计的错误信息
set @t = 0
begin tran        --启动事务
insert into Info values(‘p003‘,‘吴倩‘,‘0‘,‘n004‘,‘1990-8-12‘)
set @t = @t +@@ERROR    --累计错误信息
insert into Info values(‘p006‘,‘张三‘,‘1‘,‘n004‘,‘1992-3-19‘)
set @t = @t +@@ERROR    --累计错误信息
insert into Info values(‘p005‘,‘李四‘,‘0‘,‘n001‘,‘1991-12-24‘)
set @t = @t +@@ERROR    --累计错误信息

if @t<> 0        --如果累计发现有错误 ,就回滚
begin
    rollback
end
else            --如果累计中没有发现错误,就提交
begin
    commit
end

法二:使用try...catch....来使用事务

--try...catch....语句
begin try
...--不出错执行这里的语句
end try
begin catch
...--如果出错执行这里的语句
end catch

begin tran
begin try
    insert into Info values(‘p007‘,‘王五‘,‘0‘,‘n002‘,‘1991-4-1‘)
    insert into Info values(‘p009‘,‘张四‘,‘1‘,‘n004‘,‘1992-3-19‘)
    insert into Info values(‘p008‘,‘李九‘,‘0‘,‘n001‘,‘1991-12-24‘)
    commit
end try
begin catch
    rollback
end catch

其他方法:可以使用if语句 嵌套事务

时间: 2024-08-21 17:55:13

SQL数据库—<…>事务--简单学习的相关文章

SQL数据库&mdash;&lt;&hellip;&gt;视图&hellip;简单学习

掌握:1.视图是个什么东西?2.会建视图,会查视图3.知道视图的主要功能是查询,不是增删除改. 视图的定义: 视图可以认为是从一个数据表或者多个数据表中导出的表,视图本身没有任何数据,它是用来存放视图的定义,因此视图只是虚拟表:如果数据表中的数据记录发生变化,那么跟该表有关的视图也会发生相应的变化. 视图--相对应的是表查询结果.表--真正存储数据的地方.视图--不存数据,展示查询的结果. 视图的作用: 1.提高数据访问的安全性    2.方便查询操作    创建视图:create view 视

SQL 数据库事务 存储过程练习

数据库事务: 数据库事务(Database Transaction) 是指作为单个逻辑工作单元执行的一系列操作. 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源. 设想网上购物的一次交易,其付款过程至少包括以下几步数据库操作: 更新客户所购商品的库存信息 保存客户付款信息--可能包括与银行系统的交互 生成订单并且保存到数据库中 · 更新用户相关信息,例如购物数量等等 正常的情况下,这些操作将顺利进行,最终交易成功,与交易相关的所有数据库信息也成功地更新.

SQL数据库的简单使用

一. SQL数据库的建立,查询和删除等常用操作可以参考这个网址   http://www.w3school.com.cn/sql/ 二.数据库的打开和关闭(iOS下要导入libsqlite3.dylib框架) 一般情况下会将其封装为一个单一的类,便于外界使用. 其 .h 中声明两个类方法,代码为 #import <Foundation/Foundation.h> #import <sqlite3.h> @interface DataBase : NSObject // 打开数据库

Sql Server事务简单用法

1 var conStr = "server=localhost;database=Data;user=sa;pwd=123456"; 2 using (var connection = new SqlConnection(conStr)) 3 { 4 connection.Open(); 5 var sql = 6 string.Format( 7 "update dbo.AutoStationData set Temperture={0} where StationNum

数据库事务的学习笔记

对事务本身的理解 1.事务是一组原子性的SQL查询,对于事务内的查询要么完全成功,要么完全失败. 2.mysql默认的事务是自动提交的,即autocommit=true,也就是说一个SQL查询即是一个事务. 3.对于多条语句,通过start transaction;和commit(rollback)进行配合,将多条语句包装为一个更大的事务单元. 4.如果设置autocommit=false,那么语句将不会被提交,直到使用rollback,或者commit. 5.事务的特性ACID(原子性,一致性

SQL server 触发器简单学习笔记

触发器属于特殊的存储过程,运行在数据库,但是不能通过调用名称调用触发器,触发器是自动响应的. 触发器也是一种事务,出错回滚. 触发器分为DDL触发器和DML触发器 1:触发对象不同: DML触发器属于表或者视图:DDL触发器属于数据库或服务器. 2:触发模式不同: DML 触发器在 Insert.Update 和 Delete 语句上操作,可以作为After 触发器 和 Instead Of 触发器. DDL 触发器对 Create.Alter.Drop 和其他 DDL 语句以及执行 DDL 式

初识Winform 与C#----一个简单涉及SQL数据库的通讯录 (Contact3)

一.  关于Winform 启动程序和显示窗体--------------------------------[Program.cs]------------------用来启动程序,显示最基础的窗体 Winfom(窗体)中的许多控件------------------------[form1.cs]---------------------用来定义控件窗体,及其中的对象, ------[form1.Designer.cs]----------定义窗体及其中的对象的行为,即函数,或者方法. 控件

SQL数据库知识二(Day 25)

又到了总结知识的时候了,今天主要把SQL数据库给简单的学完了,明天开始就要开始学ADO.NET的知识了.好了,话不多说,还是看一下今天都学了哪些内容. 1  字符串类型的知识点 --类型的使用 --截取字符串 select 姓名,substring(姓名,1,1) as 姓氏,substring(姓名,2,2)as 名字 from 职工 --substring(express,start,length) --express:字符串 start:整数 制定字符串分割的开始位置 length: 分割

如何截断SQL Server2008+事务日志空间

SQL数据库事务日志记录数据库的任何更改,用户可回滚事务日志来恢复数据,但随着数据库使用时间变长,日志文件也会变得很大. 若要避免数据库的事务日志被填满,例行备份至关重要.做了日志备份后,会释放不活跃的VLF,增加日志的可用空间.但默认情况下备份日志,其日志文件的大小并未变化,如下图 备份前,总大小24.13MB 备份后,总大小仍然为24.13MB,但已用空间占比从93.1%降至11.0% 也就是,已使用日志空间是减小了,但未使用日志空间并未释放.其实,如果磁盘空间足够的话,可以不用收缩空间 那