1

我的一个 SP 中有以下逻辑:

if object_id('tempdb..##val','u') is null begin
    create table ##val (
                name varchar(512)
                ,val nvarchar(max)
    )
end

    insert ##val (name,val)values('some unique name','abcdef')

这个问题的答案表明检查if object_id(,但我有这些担忧:

1)从竞争条件的角度来看,这个检查线程安全吗?具体来说,我需要使用sp_GetAppLock/sp_ReleaseAppLock吗?

2) if 条件是否保留表上的参考##val?具体来说,由于不存在 ##val 表,所有其他会话是否有可能在条件 生成语句##val的否定结果失败后立即释放引用?如果是的话,如何在不锁定该表中的行的情况下保留和保持当前会话的引用。ifinsert##val

4

0 回答 0