[英]t-SQL UPDATE table after adding columns to it with ADD TABLE
我必須向表中添加幾列,然后在SQL Server 2008中對其進行更新。表定義可歸結為:
CREATE TABLE tbl (id INT PRIMARY KEY,
dvt NVARCHAR(32),
dd NVARCHAR(32));
INSERT INTO tbl (id, dvt, dd)
VALUES(1, '1', NULL);
INSERT INTO tbl (id, dvt, dd)
VALUES(2, '', NULL);
INSERT INTO tbl (id, dvt, dd)
VALUES(3, '2,5', NULL);
INSERT INTO tbl (id, dvt, dd)
VALUES(4, '13, 34, 45, 5', NULL);
INSERT INTO tbl (id, dvt, dd)
VALUES(5, '-1, 8, 10', NULL);
INSERT INTO tbl (id, dvt, dd)
VALUES(6, '-2, -10', NULL);
如何在創建表的同一事務中將數據添加到表中?
嘗試類似的東西
SET XACT_ABORT ON
**--BEGIN TRANSACTION**
ALTER TABLE tbl ADD d0 SMALLINT NULL
ALTER TABLE tbl ADD d1 SMALLINT NULL
ALTER TABLE tbl ADD d2 SMALLINT NULL
GO
UPDATE tbl
SET
d0 = 1,
d1 = 2,
d2 = 3
**--COMMIT TRANSACTION**
SET XACT_ABORT OFF
SELECT * FROm tbl
沒有交易
更新語句必須包含在EXEC()
塊中。
SET XACT_ABORT ON
BEGIN TRANSACTION
IF 1=1 BEGIN --used for simplicity to illustrate condition
ALTER TABLE tbl ADD d0 SMALLINT NULL
ALTER TABLE tbl ADD d1 SMALLINT NULL
ALTER TABLE tbl ADD d2 SMALLINT NULL
EXEC('UPDATE tbl SET d0 = 1, d1 = 2, d2 = 3')
END
COMMIT TRANSACTION
SET XACT_ABORT OFF
SELECT * FROm tbl
(此答案實際上是ahmd0的答案,因此將其發布為社區Wiki。但是,他將答案放在自己的問題中,這使像我這樣的Google員工很難確定(並贊成)我們喜歡的答案。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.