T-Sql(二)事务(Transaction)

原文:T-Sql(二)事务(Transaction)

  今天讲下T-Sql语法中事务的用法,事务在项目中一般用的很少,主要用于转账,或是一些多表操作,第一步完成不了滚回,不执行接下的步骤。要么都不完成要么都完成,这是事务的特征。

  语法很简单,示例代码如下:

 1 create database Transaction_9_30
 2 use Transaction_9_30
 3 drop table Zanghui
 4 create schema Jago
 5 create table Jago.Zhanghui
 6 (
 7     ID int primary key,
 8     Balance int not null
 9 )
10 insert into Jago.Zhanghui(ID,Balance) values(1,1000);
11 insert into Jago.Zhanghui(ID,Balance) values(2,3000);
12 update Jago.Zhanghui set Balance=1000 where ID=1;
13 update Jago.Zhanghui set Balance=3000 where ID=2;
14 select *from Jago.Zhanghui
15
16 begin transaction t1;                    --例子:转帐操作;一个表(id,balance)
17     declare @v bigint;                  --要求利用事务:
18     set @v = 0;
19     update Jago.Zhanghui set Balance=Balance-200 where ID=1;
20     if not exists(select *from Jago.Zhanghui where ID=1)
21         begin
22             --raiserror('asdfsdf',16,-1)
23             set @v = @v + 1;
24         end
25     --set @v = @v + @@error;
26     print @v;
27     update Jago.Zhanghui set Balance=Balance+200 where ID=2;
28     if not exists(select *from Jago.Zhanghui where ID=2)
29         begin
30             --update Jago.Zhanghui set Balance=Balance+200 where ID=1;
31             --raiserror('asdfsdf',16,-1)
32             set @v = 1;
33         end
34
35     if(@v = 0)
36         begin
37             print @v
38             commit tran t1;
39         end
40     else
41         begin
42             print @v
43             rollback tran t1;
44         end
45 --commit transaction t1
46         

 

时间: 2024-08-01 10:29:48

T-Sql(二)事务(Transaction)的相关文章

SQL Server事务隔离级别详解

SQL Server事务隔离级别详解 标签: SQL SEERVER/MSSQL SERVER/SQL/事务隔离级别选项/设置数据库事务级别 SQL 事务隔离级别 概述      隔离级别用于决定如果控制并发用户如何读写数据的操作,同时对性能也有一定的影响作用. 步骤 事务隔离级别通过影响读操作来间接地影响写操作:可以在回话级别上设置事务隔离级别也可以在查询(表级别)级别上设置事务隔离级别.事务隔离级别总共有6个隔离级别:READ UNCOMMITTED(未提交读,读脏),相当于(NOLOCK)

SQL Server事务日志被填满的原因是什么

SQL Server事务日志可能会被填满,这会阻止之后的数据库操作,包括UPDATE, DELETE, INSERT 和CHECKPOINT. 事务日志填满会导致1105错误: Can't allocate space for object syslogs in database dbname because the logsegment is full. If you ran out of space in syslogs, dump the transaction log. Otherwis

SQL Server 事务隔离级别详解

原文:SQL Server 事务隔离级别详解 标签: SQL SEERVER/MSSQL SERVER/SQL/事务隔离级别选项/设计数据库事务级别 SQL 事务隔离级别 概述      隔离级别用于决定如果控制并发用户如何读写数据的操作,同时对性能也有一定的影响作用. 步骤 事务隔离级别通过影响读操作来间接地影响写操作:可以在回话级别上设置事务隔离级别也可以在查询(表级别)级别上设置事务隔离级别.事务隔离级别总共有6个隔离级别:READ UNCOMMITTED(未提交读,读脏),相当于(NOL

后台(19)——事务Transaction

探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 详解Android主流框架不可或缺的基石 站在源码的肩膀上全解Scroller工作机制 Android多分辨率适配框架(1)- 核心基础 Android多分辨率适配框架(2)- 原理剖析 Android多分辨率适配框架(3)- 使用指南 自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View

SQL Server 事务和锁详解

最近在项目中进行压力测试遇到了数据库的死锁问题,简言之,如下的代码在 SERIALIZABLE 隔离级别造成了死锁:  代码如下 复制代码 SELECT @findCount=COUNT(id) FROM MyTable WHERE [fk_related_id]=@Argument IF (@findCount > 0) BEGIN ROLLBACK TRANSACTION RETURN ERROR_CODE END INSERT INTO MyTable ([fk_related_id],-

winform 项目删除sql server事务问题

问题描述 winform 项目删除sql server事务问题 当我点击删除时报下面错误,是什么意思? 怎么解决?项目是winform 数据库是sql server 如果分配给命令的连接位于本地挂起事务中,ExecuteReader 要求命令拥有事务.命令的 Transaction 属性尚未初始化. 事务部分代码 bool isSucess = false; using (DbBase DbContext = new DbBase(connectionName)) { using (IDbTra

人人都是 DBA(VI)SQL Server 事务日志

原文:人人都是 DBA(VI)SQL Server 事务日志 SQL Server 的数据库引擎通过事务服务(Transaction Services)提供事务的 ACID 属性支持.ACID 属性包括: 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability) 事务日志(Transaction Log) 事务日志(Transaction Log)存储的是对数据库所做的更改信息,让 SQL Server 有机会恢复数据库.而恢复

SQL Server 事务嵌套

原文:SQL Server 事务嵌套 示例代码: DECLARE @TranCounter INT; SET @TranCounter = @@TRANCOUNT; IF @TranCounter > 0 -- Procedure called when there is -- an active transaction. -- Create a savepoint to be able -- to roll back only the work done -- in the procedure

关于SQL Server 事务、异常和游标详解(1/3)

本教程来说一下关于SQL Server 事务.异常和游标的事情下面来看教程,希望对你有帮助. 1. 事务的特点         事务有若干条T-SQL指令组成,并且所有的指令昨晚一个整体提交给数据库教程系统,执行时,这组指令要么全部执行完成,要么全部取消.因此,事务是一个不可分割的逻辑单元.           事务有4个属性:原子性(Atomicity).一致性(Consistency).隔离性(Isolation)以及持久性(Durability),也称作事务的ACID属性.        

Delphi FireDAC 下的 Sqlite(七) 备份、优化和事务(Transaction)

用 TFDSQLiteBackup 控件, 两三行代码即可完成 Sqlite 数据库的备份. procedure TForm1.Button1Click(Sender: TObject); begin {先初始化目标} FDConnection1.DriverName := 'SQLite'; FDConnection1.Params.Add('Database=C:\Temp\FDDemo_Back.sdb'); //如果不指定这个路径, 就是备份到内存 FDConnection1.Open(