我在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数据库里也没有。我的问题是,如果我想正常运行上面的命令,我该如何修改它。进一步说,我要如何查询表名加#的临时表。谢谢大家。
WHERE object_id=OBJECT_ID('#ASCIIVals'))
DROP TABLE #ASCIIValsCREATE TABLE #ASCIIVals
(ASCIIValue smallint)我发现第一运行这个程序能够成功,第二次在运行创建表命令时会报错表已存在,必须关掉查询,再运行创建表命令才能成功我后来网上查了下,发现可能问题是因为我创建的是表名前加#的临时表,而临时表在sys.objects里是查询不到的,在Adventureworks2008数据库里也没有。我的问题是,如果我想正常运行上面的命令,我该如何修改它。进一步说,我要如何查询表名加#的临时表。谢谢大家。
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系统数据库中
select * from [tempdb].[dbo].[sysobjects] where xtype='u'