我有一个脚本,我正在向表中添加一列,并立即从另一个表中填充该列的数据。但是,我在添加的列上得到了“无效列名”的错误。
具体地说,错误是“无效列名'tagID'”。
在“BEGIN TRANSACTION”和“COMMIT”之间的代码实际上是一个更大脚本的摘录,但这是相关的摘录(我需要所有内容成功或简单地回滚)。
具体地说,错误是“无效列名'tagID'”。
在“BEGIN TRANSACTION”和“COMMIT”之间的代码实际上是一个更大脚本的摘录,但这是相关的摘录(我需要所有内容成功或简单地回滚)。
BEGIN TRY
BEGIN TRANSACTION
ALTER TABLE [Items] ADD tagID [uniqueidentifier] NULL
MERGE INTO
Items AS target
USING
Tags AS t ON t.tag = target.tag
WHEN MATCHED THEN
UPDATE SET target.tagID = t.id;
COMMIT
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
END CATCH
GO
Items.tagID
是否存在吗?在上面的代码片段中之前,你是否在脚本中添加了Items.tagID
并且处于同一批处理之中?如果是这样的话,合并语句的解析会在列创建之前发生,并且会在任何运行之前失败。 - Shannon SeveranceALTER TABLE
命令而不出现问题吗? - gmileyALTER TABLE
命令可以单独运行而不会出现问题。 @Shannon 是否有办法解决这个解析问题,还是我必须使用两个单独的事务? - charmeleon