存储过程使用临时表超时主键提示已存在
Create PROCEDURE [dbo].[sp_Test]
@aa int,
@rtn int output
AS
BEGIN
if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#TT'))
DROP TABLE #TT
CREATE TABLE #TT
(
Id INT IDENTITY(1,1),
[Mid] int,
CONSTRAINT [PK_#TT] PRIMARY KEY CLUSTERED
(
Id ASC
)
) ON [PRIMARY]
insert into #TT([Mid]) values (@aa)
set @rtn =(select id from tempdb..sysobjects where id=object_id('tempdb..#TT'))
if(@aa =1)--传入参数1延迟30秒
begin
WAITFOR DELAY '00:00:30';
end
DROP TABLE #TT
END
问题:
操作1:传入参数aa=1;同时操作2:传入参数aa=2;在操作1执行完之前,操作2都会提示‘PK_#TT’已存在,无主键则操作1不会影响操作2.
疑问:当调用本存储过程超时,那么在该时间内,所有其它调用本存储过程的请求都会失败,提示主键‘PK_#TT’已存在。
如何处理?1.不使用主键;2.保证不超时(办不到)?