簡體   English   中英

使用ADD TABLE向其中添加列后的t-SQL UPDATE表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM