我想添加一列到表,然後插入數據到它,然後刪除該列。我希望這是一個交易。 爲了我的問題,我簡化了這裏的問題,實際上我正在使用新的列臨時從另一個表中獲取一些數據,然後將其插入到已更改的表中。我有與簡化版本相同的問題。SQL Server的 - ALTER TABLE和插入在同一事務
的ALTER TABLE
語句之後,我有需要GO
,但SSMS告訴我
Msg 102, Level 15, State 1, Line 6
Incorrect syntax near ';'.
如果我刪除了GO
,插入語句試圖插入到新添加的列時失敗。
Msg 207, Level 16, State 1, Line 8
Invalid column name 'NewCol'.
如果我運行BEGIN TRAN
與正常工作的GO
前ALTER TABLE
聲明。但我需要這個在交易中。
任何幫助表示讚賞。代碼如下:
BEGIN TRY
BEGIN TRAN
ALTER TABLE myTable
ADD NewCol varchar(6);
GO
INSERT INTO myTable (NewCol, BillingName, BillingAddress)
SELECT * FROM OPENQUERY(linkedServer, 'SELECT * FROM customer');
ALTER TABLE myTable
DROP COLUMN NewCol;
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH
這有什麼用?爲什麼添加一個立即丟棄的列?這對我來說沒有意義。你試圖用這個解決的實際問題是什麼? –
爲什麼不使用臨時表而不是像這樣添加和刪除列? –