虽然我已经删除了临时表,但如果将创建具有相同表名和额外列名的临时表,它不会让我选择新的列名。
我一直在使用 SQL Server 2008。
例如试试这段代码:
IF (object_id('tempdb..#xyz') IS NOT NULL)
DROP TABLE #xyz;
CREATE TABLE #xyz(
[a] [datetime] NULL,
[b] [nvarchar](255) NULL,
[c] [nvarchar](255) NULL
) ON [PRIMARY]
GO
IF (object_id('tempdb..#xyz') IS NOT NULL)
DROP TABLE #xyz;
CREATE TABLE #xyz(
[a] [datetime] NULL,
[b] [nvarchar](255) NULL,
[c] [nvarchar](255) NULL,
[d] [nvarchar](255) NULL
) ON [PRIMARY]
SELECT [d] FROM #xyz
这是说:
Msg 207, Level 16, State 1, Line 13
Invalid column name 'd'.
同样,如果我们像 Martin Parkin 提到的那样尝试选择 *
,它会给出列名为 d
的结果。
我无法为我的动态列选择 *
,它不允许我选择其他列。
为什么?
最佳答案
您需要GO
来分隔DROP
和CREATE
语句。它们需要分批处理。
IF (object_id('tempdb..#xyz') IS NOT NULL)
DROP TABLE #xyz;
CREATE TABLE #xyz(
[a] [datetime] NULL,
[b] [nvarchar](255) NULL,
[c] [nvarchar](255) NULL
) ON [PRIMARY]
GO
IF (object_id('tempdb..#xyz') IS NOT NULL)
DROP TABLE #xyz;
GO
CREATE TABLE #xyz(
[a] [datetime] NULL,
[b] [nvarchar](255) NULL,
[c] [nvarchar](255) NULL,
[d] [nvarchar](255) NULL
) ON [PRIMARY]
SELECT [d] FROM #xyz
关于sql - 如果使用附加列名再次创建删除的临时表,则无法选择附加列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22054491/