我想添加一列到表,然后插入数据到它,然后删除该列。我希望这是一个交易。 为了我的问题,我简化了这里的问题,实际上我正在使用新的列临时从另一个表中获取一些数据,然后将其插入到已更改的表中。我有与简化版本相同的问题。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
这有什么用?为什么添加一个立即丢弃的列?这对我来说没有意义。你试图用这个解决的实际问题是什么? –
为什么不使用临时表而不是像这样添加和删除列? –