下面是我的存储过程,为什么多人操作的时候会发生死锁呢,急呀!
此存储过程是取最大号用的!
CREATE procedure uf_getnextvalues
@al_argument numeric(3)
as
Declare
@ll_count numeric(8),
@ls_return varchar(16),
@ll_temp numeric(8)
select @ll_count = count(*)
from t_sequence
where id = @al_argument and convert(char(8),rq,112) = convert(char(8),getdate(),112)
if @ll_count < 1
begin
begin transaction
delete from t_sequence where id = @al_argument
insert into t_sequence(id,rq,cu_values)
values
(@al_argument,getdate(),1)
commit transaction
end
select @ll_temp = cu_values
from t_sequence
where id = @al_argument and convert(char(8),rq,112) = convert(char(8),getdate(),112)
select @ls_return = convert(char(8),getdate(),112)+replace(str(@al_argument,3)+str(cu_values,5),' ','0')
from t_sequence
where id = @al_argument and convert(char(8),rq,112) = convert(char(8),getdate(),112)
if @ll_temp >= 99999
begin
select @ll_temp = 1
end
else
begin
select @ll_temp = @ll_temp + 1
end
begin transaction
update t_sequence set cu_values = @ll_temp
where id = @al_argument and convert(char(8),rq,112) = convert(char(8),getdate(),112)
commit transaction
SELECT @ls_return
return (0)
GO