sql-server - 创建临时表前先检查临时表是否存在,如果存在则删除

标签 sql-server sql-server-2005 temp-tables alter-table

我使用以下代码来检查临时表是否存在,并在再次创建之前删除该表(如果存在)。只要我不更改列,它就可以正常工作。如果我稍后添加一列,它将给出“无效列”的错误。请让我知道我做错了什么。

IF OBJECT_ID('tempdb..#Results') IS NOT NULL
    DROP TABLE #Results

CREATE TABLE #Results
(
    Company                CHAR(3),
    StepId                TINYINT,
    FieldId                TINYINT,
)

select company, stepid, fieldid from #Results

--Works fine to this point

IF OBJECT_ID('tempdb..#Results') IS NOT NULL
    DROP TABLE #Results

CREATE TABLE #Results
(
    Company                CHAR(3),
    StepId                TINYINT,
    FieldId                TINYINT,
    NewColumn            NVARCHAR(50)
)

select company, stepid, fieldid, NewColumn from #Results

--Does not work

最佳答案

我无法重现该错误。

也许我不明白这个问题。

以下内容在 SQL Server 2005 中对我来说效果很好,额外的“foo”列出现在第二个选择结果中:

IF OBJECT_ID('tempdb..#Results') IS NOT NULL DROP TABLE #Results
GO
CREATE TABLE #Results ( Company CHAR(3), StepId TINYINT, FieldId TINYINT )
GO
select company, stepid, fieldid from #Results
GO
ALTER TABLE #Results ADD foo VARCHAR(50) NULL
GO
select company, stepid, fieldid, foo from #Results
GO
IF OBJECT_ID('tempdb..#Results') IS NOT NULL DROP TABLE #Results
GO

关于sql-server - 创建临时表前先检查临时表是否存在,如果存在则删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/659051/

相关文章:

c# - 允许在事务运行时选择

SQL - 如何在只返回一行的同时检查一列的多个值?

t-sql - 为什么在 SQL Server 2005 中进行以下设置时使用索引查找而不是扫描

sql - SQL获取数据集中每个月的最大日期

sql - 为什么没有从 SQL Server 中的 tempdb 中删除临时表?

sql-server - 图像表的数据库设计

sql - While循环问题

sql - 尝试在单个查询中创建多个临时表

sql-server - 索引一次性临时表