做了个程序,局域网内多个用户进行下面sql事物操作的时候容易出现死锁的情况,使得部分用户户无法插入数据,下面是简化版,大概的意思有了,请问该如何优化修改
begin transaction
declare @errorSum int
set @errorSum=0
if ((select 1 from Table1 where student_sn=@student_sn) = 1)
begin
update Table1 set is_chk=0 where student_sn=@student_sn;
end
else
begin
insert into Table1 (student_sn) values(@student_sn);
end
select count(1) from Table1 where user_sn=@user_sn
set @errorSum=@errorSum+@@ERROR
if @errorSum<>0
begin
rollback transaction
end
else
begin
commit transaction
end