日期:2014-05-18 浏览次数:20613 次
ALTER PROCEDURE dbo.StoredProcedure2 @UYEAR as varchar(4), @UDIV as varchar(1), As if exists(Select 1 FROM AA WHERE UYEAR = @UYEAR AND UDIV = @UDIV ) Select UYEAR,UDIV,AUID+1 FROM AA WHERE UYEAR = @UYEAR AND UDIV = @UDIV else Select 'UYEAR'=@UYEAR,'UDIV' =@UDIV,'AUID'=1
------解决方案--------------------
create Table AA (UYEAR varchar(4),UDIV varchar(1),AUID int) ------------------------------ 搞那么复杂? create proc wsp @uyear varchar(4), @udiv varchar(1) as if exits(select 1 from AA where uyear=@year and udiv=@udiv) update aa set auid=auid+1 where uyear=@year and udiv=@udiv else insert into aa select @uyear,@udiv,1
------解决方案--------------------
好的,呵呵
不过还有一个问题。
因为我这个自动加1,是要实现派他操作的。
如果没有 Transaction的话,会不会出现同一时间更新操作呢?
我的AUID就是想实现银行账户的流水号,不管谁操作,都不能重复。
--------------------
if exits(select 1 from AA where uyear=@year and udiv=@udiv)
update aa set auid=auid+1 where uyear=@year and udiv=@udiv
else
insert into aa select @uyear,@udiv,1
一次只有一个DML语句在执行,一个DML语句默认就是一个Transaction
所以不会的