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