我有一個腳本,我正在向表中添加一列,並在我用另一個表中的數據填充該列之後立即執行。我在我添加的列上收到'無效的列名'錯誤。事務中的SQL Server'無效的列名'
的錯誤,特別是Invalid column name '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」?因爲如果是這樣,合併語句的分析發生在創建列之前,並且在任何運行之前都會失敗。 –
你可以自行執行'ALTER TABLE'命令嗎? – gmiley
我認爲這會給你一些你的問題的信息。 http://stackoverflow.com/questions/7426199/problem-with-alter-then-update-in-try-catch-with-tran-using-transact-sql/7452280#7452280 – DVT