我在SQL 2008里创建一个表,在创建表前先检查下这个表是否存在,如果存在则删除这个表:USE AdventureWorks2008IF EXISTS (SELECT * FROM sys.objects 
WHERE object_id=OBJECT_ID('#ASCIIVals')) 
DROP TABLE #ASCIIValsCREATE TABLE #ASCIIVals
(ASCIIValue smallint)我发现第一运行这个程序能够成功,第二次在运行创建表命令时会报错表已存在,必须关掉查询,再运行创建表命令才能成功我后来网上查了下,发现可能问题是因为我创建的是表名前加#的临时表,而临时表在sys.objects里是查询不到的,在Adventureworks2008数据库里也没有。我的问题是,如果我想正常运行上面的命令,我该如何修改它。进一步说,我要如何查询表名加#的临时表。谢谢大家。

解决方案 »

  1.   


    create table #t(id int)
    select * from tempdb.dbo.#t
    drop table #t
    /*
    database name 'tempdb' ignored, referencing object in tempdb.
    database name 'tempdb' ignored, referencing object in tempdb.
    id
    -----------(0 row(s) affected)
    */你创建以后,在tempdb系统数据库中
      

  2.   

    --查看临时表
    select * from [tempdb].[dbo].[sysobjects] where xtype='u'