千家信息网

Sql Server事务语法及使用方法的实例分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章将为大家详细讲解有关Sql Server事务语法及使用方法的实例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。实例讲述了Sql Serve
千家信息网最后更新 2026年11月01日Sql Server事务语法及使用方法的实例分析

这篇文章将为大家详细讲解有关Sql Server事务语法及使用方法的实例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

实例讲述了Sql Server事务语法及使用方法。具体如下:

事务是关于原子性的。原子性的概念是指可以把一些事情当做一个不可分割的单元来看待。从数据库的角度看,它是指应全部执行或全部不执行的一条或多条语句的最小组合。

为了理解事务的概念,需要能够定义非常明确的边界。事务要有非常明确的开始和结束点。SqlServer中的每一条select、insert、update、delete语句都是隐式事务的一部分。即使只发出一条语句,也会把这条语句当做一个事务-或执行语句的所有内容或什么都不执行。但是如果需要的不只是一条,而是多条语句呢?在这种情况下,就需要有一种方法来标记事务的开始和结束,以及事务的成功或失败。可以使用一些T-SQL语句在事务中"标记"这些点。

begin tran:设置起点 commit tran:使事务成为数据库中永久的、不可逆转的一部分 rollback tran:本质上说想要忘记它曾经发生过 save tran:创建一个特定标记,只允许部分回滚

begin tran

事务的开始可能是事物过程中最容易理解的概念。它唯一的目的就是表示一个单元的开始。如果由于某种原因,不能或者不想提交事务,那么这就是所有数据库活动将要回滚的起点。也就是说,数据库会忽略这个起点之后的最终没有提交的所有语句。

语法如下:

复制代码 代码如下: begin tran[saction] [|<@transaction variable>][with mark[<'description'>]]

commit tran

事务的提交是一个事务的终点。当发出commit tran命令时,可以认为事务执行完毕。也就是说,事务所包含的所有Sql语句执行完毕,事务的影响现在是持久的并会继续,即使系统发生故障也不受影响(只要有备份或数据库文件没有被物理破坏就行)。撤销已完成事务的唯一方法就是发出一个新的事务,从功能上而言,该事务是对上一个事务的反转。

commit tran语法如下:

复制代码 代码如下: commit tran[saction][|<@transaction variable>]

rollback tran

rollback是进行事务回滚,从关联的begin语句开始发生的任何事情都会被忘记,即撤销该事务包含的所有操作。除了允许保存点外,rollback的语法看上去和begin或commit语句一样:

复制代码 代码如下: rollback tran[saction][||<@transaction variable>|<@savepoint variable>]

save tran

保存事务从本质上说就是创建书签(bookmark)。为书签建立一个名称,在建立了"书签"之后,可以在回滚中引用它。创建书签的好处是可以回滚到代码中的特定点上-只要为想要回滚到的那个保存点命名。

语法如下:

复制代码 代码如下: save tran[saction][|<@savepoint variable>]

SqlServer事务实例

UserInfo表结构如图:

事务代码1:

begin tran tran_AddUserInfo --开始事务declare @tran_error int;set @tran_error=0;begin try insert into dbo.UserInfo values(2016009,'aaa','2016-08-19 09:13:41.227','男') insert into dbo.UserInfo values(2016009,'bbb','2016-08-19 09:13:41.227','哼哼哼') insert into dbo.UserInfo values(2016009,'ccc','2016-08-19 09:13:41.227','哈哈哈')end trybegin catch set @tran_error=@tran_error+1; --加分号或不加都能正常执行end catchif(@tran_error>0)begin rollback tran tran_AddUserInfo; --执行出错,回滚事务(指定事务名称) print @tran_error;endelsebegin commit tran tran_AddUserInfo; --没有异常,提交事务(指定事务名称) print @tran_error;end

事务代码2:

begin tran tran_AddUserInfo --开始事务declare @tran_error int;set @tran_error=0;begin try insert into dbo.UserInfo values(2016009,'aaa','2016-08-19 09:13:41.227','男') insert into dbo.UserInfo values(2016009,'bbb','2016-08-19 09:13:41.227','哈哈') insert into dbo.UserInfo values(2016009,'ccc','2016-08-19 09:13:41.227','哈哈')end trybegin catch set @tran_error=@tran_error+1; --加分号或不加都能正常执行end catchif(@tran_error>0)begin rollback tran; --执行出错,回滚事务(不指定事务名称) print @tran_error;endelsebegin commit tran; --没有异常,提交事务(不指定事务名称) print @tran_error;end

C#后台代码拼Sql事务语句

public partial class TestSqlTran : System.Web.UI.Page{  protected void Page_Load(object sender, EventArgs e)  {    if(!IsPostBack)    {      Execute();    }  }  private void Execute()  {    string connString = ConfigurationManager.ConnectionStrings["connString"].ToString();    SqlConnection connection = new SqlConnection(connString);    StringBuilder sqlSB=new StringBuilder();    /*sqlSB.AppendLine("begin tran tran_handle")与SqlServer中的换行不是一回事,     C#后台每行Sql语句后边必须加空格分隔,     不能用sqlSB.AppendLine("begin tran tran_handle")来替代sqlSB.Append("begin tran tran_handle ")    */    sqlSB.Append("begin tran tran_handle ");    sqlSB.AppendFormat("declare {0} int;set {0}=0;", "@tran_error");    sqlSB.Append("begin try ");    sqlSB.AppendFormat("delete from Descriptions where Id='{0}' ", "1");    sqlSB.Append("end try ");    sqlSB.Append("begin catch ");    //set @tran_error=@tran_error+1;以分号结尾可以不用空格    sqlSB.Append("set @tran_error=@tran_error+1;");    sqlSB.Append("end catch ");    sqlSB.Append("if(@tran_error>0) begin rollback tran; end ");    sqlSB.Append("else begin commit tran; end ");    SqlCommand cmd=new SqlCommand(sqlSB.ToString(),connection);    connection.Open();    int count = cmd.ExecuteNonQuery();    connection.Close();  }}

关于Sql Server事务语法及使用方法的实例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

事务 语句 代码 语法 方法 名称 数据 数据库 实例 书签 就是 使用方法 内容 分号 标记 概念 起点 实例分析 分析 也就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云南咖啡 博彦科技互联网金融 江苏根荣互联网科技 互联网科技行业发展 互联网是不是新科技 互联网金融与金融科技 金融科技与互联网金融 安徽鑫晟辉互联网科技 互联网科技ppt模板 火传媒上海互联网科技 广州优美互联网科技 互联网科技创新服务 互联网校园科技培训 恒生互联网科技指数跳水 开一家科技互联网公司需要多少钱 保险科技服务互联网营销体系 上海京穆互联网科技有限公司 银川新华互联网科技学校是国营吗 恒生科技指数 中概互联网 银川新华互联网科技学校招聘 科技赋能下的互联网金融 金融科技还是互联网 互联网中国科技 上海卓越科技 互联网 滨湖区互联网智能科技产品供应 智腾互联网科技有限公司 苏州五指互联网络科技有限 中国航天科技大学国际工业互联网 互联网金融科技元年 杭州披云加互联网科技有限公司
0