尝试将列添加到临时表失败

时间:2009-11-30 05:22:17

标签: tsql alter-table

今天早上我已经多次查看了这个问题并且找不到问题。它可能很简单,当有人指出它时,我会觉得自己像个白痴。这个SQL会失败的是什么?

-- Get CurrentRowCount
DECLARE @MaxID INT

SELECT @MaxID = ISNULL(MAX(WorkTypeID),0)
FROM caWorkType

ALTER TABLE #WorkType ADD _RowID INT NOT NULL IDENTITY(@MaxID,1)

我得到的错误是:“'@MaxID'附近的语法不正确”我已经检查过,并且select语句将@MaxID设置为45。临时表#WorkType也没有名为“_RowID”的列

2 个答案:

答案 0 :(得分:4)

IDENTITY子句不喜欢变量。使用sp_executesql运行ALTER语句:

-- Get CurrentRowCount
DECLARE @MaxID INT

SELECT @MaxID = ISNULL(MAX(WorkTypeID),0)
FROM caWorkType

DECLARE @sql varchar(max);
SET @sql = 'ALTER TABLE #WorkType ADD _RowID INT NOT NULL IDENTITY(' +
        CAST(@MaxID as varchar) +
        ',1)';
EXEC sp_executesql @statement = @sql;

答案 1 :(得分:2)

尝试将列添加到失败的临时表不是一种行为,但是在指定IDENTITY的值时不能使用变量:

不行

ALTER TABLE #WorkType ADD _RowID INT NOT NULL IDENTITY(@MaxID,1)

确定

ALTER TABLE #WorkType ADD _RowID INT NOT NULL IDENTITY(55,1)

马克