多线程调用些过程@filename还是有重复的 咋回事呀。
CREATE PROCEDURE dbo.p_release
(
@title varchar(40),
@poster varchar(20),
@postdatetime datetime,
@replies int
)
AS
declare @s int,@posterid varchar,@filename varchar(100)
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRANSACTION
set @posterid=null
select @s=count(*) from post where datediff(day,@postdatetime,getdate())=0
set @filename='/post/'+yewuyuan.dbo.path(@s+1,4,convert(varchar(10),@postdatetime,120))
insert post (poster,posterid,title,filename,postdatetime,replies) values (@poster,@posterid,@title,@filename,@postdatetime,@replies)
If @@error > 0
       ROLLBACK TRANSACTION
Else
       COMMIT TRANSACTION
select @filename
GO

解决方案 »

  1.   

    在begin trans
    内的第一行将表post锁住试试
    dbcc lockobjectschema(post)
    ....事务结束将自动释放锁
      

  2.   

    select @s=count(*) from post where datediff(day,@postdatetime,getdate())=0 
    对不起兄弟们,,,我看着是咋回事了。。getdate()这应该是字段名。ctrl a 挺害人呀