[英]t-SQL UPDATE table after adding columns to it with ADD TABLE
I have to add several columns to the table and then update them in SQL Server 2008. The table definition boils down to this: 我必须向表中添加几列,然后在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);
How do I add data to the table in the same transaction that created the table? 如何在创建表的同一事务中将数据添加到表中?
Try something like 尝试类似的东西
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
Without the transaction 没有交易
The update statement must be enclosed in EXEC()
block. 更新语句必须包含在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
(This answer is actually ahmd0's answer, hence posting it as community wiki. However, his putting his answer in his question made it difficult for googlers like myself to idenitfy (and upvote) the answer we like.) (此答案实际上是ahmd0的答案,因此将其发布为社区Wiki。但是,他将答案放在自己的问题中,这使像我这样的Google员工很难确定(并赞成)我们喜欢的答案。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.