SQL事务,只要有一条更新语句受影响行数为0则rollback

两条更新语句只要其中一条影响的行数为0,则回滚

复制代码
create PROCEDURE [dbo].[UpdateCompanyInfoBy_Sam]
@Client varchar(20),
@Code varchar(20),
@CompanyName nvarchar(50),
@Address nvarchar(100),
@Tel varchar(15),
@Person nvarchar(10),
@Email varchar(50),
@Remark nvarchar(250),
@Phcode varchar(20),
@UpdateTime varchar(50)
AS

begin tran --开始执行事务

declare @RowCountA int,@RowCountB int

update Tb_CompanyInfo set client=@Client,code=@Code,CompanyName=@CompanyName,
Address=@Address,Tel=@Tel,person=@Person, Email=@Email,Remark=@Remark where client =@Client and code=@Code

set @RowCountA = @@ROWCOUNT

update Tb_PHCode set phcode=@Phcode where client=@Client and code=@Code

set @RowCountB = @@ROWCOUNT

if @RowCountA = 0 or @RowCountB = 0 --判断如果两条语句有任何一条出现错误
begin
  begin rollback tran --开始执行事务的回滚,恢复的转账开始之前状态
  return 0
  print 0
   end
end
else
begin
  begin commit tran --开始执行事务的回滚,恢复的转账开始之前状态
  return 1
  print 1
  end
end
复制代码

 

下面是C#调用

复制代码
protected void Button1_Click(object sender, EventArgs e)

{

SqlConnection con =new SqlConnection(@"Data Source=.\SQLEXPRESS;database=aaaa;uid=sa;pwd=jcx"); //连接字符串

SqlCommand cmd = new SqlCommand("UpdateCompanyInfoBy_Sam",con); //调用存储过程

cmd.CommandType = CommandType.StoredProcedure;

con.Open();

SqlParameter prar = new SqlParameter();//传递参数

cmd.Parameters.AddWithValue("@Client", TextBox1.Text);

cmd.Parameters.AddWithValue("@code", TextBox2.Text);

cmd.Parameters.AddWithValue("@momeys",Convert.ToInt32( TextBox3.Text) );

......................//此处省略参数

cmd.Parameters.Add("@return", "").Direction = ParameterDirection.ReturnValue;//获取存储过程的返回值

cmd.ExecuteNonQuery();

int i=Convert.ToInt32(cmd.Parameters["@return"].Value);//把返回值赋值给value

if (i>0)

{

MessageBox.Show("修改成功!");

}

else

{

MessageBox.Show("修改失败!");

}

}
复制代码

 

————————————————
版权声明:本文为CSDN博主「Sam萨姆」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zzzzzzzert/article/details/9095965

posted @   dreamw  阅读(303)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2020-11-11 js数组、json、js对象的区别与联系
点击右上角即可分享
微信分享提示