客户端应用程序调用服务器端的存储过程,该存储过程中开始的第一条语句是: create table #t(a int)  在存储过程末尾有语句 drop table #t  两条语句中间有大量的代码,假如从创建#T表到删除表#t的执行间隔为三秒钟. 问题是:
当客户端1 调用该存储过程,执行了建表操作,在还没执行到末尾的drop 表操作时,另一个客户端2又调用该存储过程,此时客户端2执行create table #t 语句会出错吗???????还忘小哥哥们指定一下!由于应用程序直接测试这个问题不好操作,想从理论上先得知点信息!

解决方案 »

  1.   

    不会,本地临时表由存储过程创建或由多个用户同时执行的应用程序创建,则 SQL Server 必须能够区分由不同用户创建的表。为此,SQL Server 在内部为每个本地临时表的表名追加一个数字后缀。
      

  2.   

    你可以打开不同的查询分析器,运行下面这句话,你会发现他们的id是不相同的,就是说临时表不会造成冲突,即使不同人同时创建。
    create table #t(id int)
    use tempdb
    select id from Sysobjects
    where name like '%#t%'
    drop table #t/*
    id          
    ----------- 
    967674495id          
    ----------- 
    807673925
    */