添加列并在事务中更新它

时间:2014-03-20 19:47:46

标签: sql-server tsql sql-server-2012

我正在尝试添加和更新列。此代码在交易中。

ALTER TABLE [Foo] ADD SomeId INT NULL
UPDATE [Foo] SET SomeId = 1
ALTER TABLE [Foo] ALTER COLUMN SomeId INT NOT NULL

我收到此错误:

  

消息207,级别16,状态1,行5无效的列名称'SomeId'。

我尝试在第一个GO之后添加ALTER TABLE语句,但显然在事务中它是无效的。如何在交易中完成这项工作?

1 个答案:

答案 0 :(得分:2)

试试这个:

Begin Try

Begin Tran

Alter Table [Foo] Add SomeId INT NOT NULL Constraint TempConstraint Default  (1)
Alter Table [Foo] Drop TempConstraint

End Tran

基本上这样做是添加新列,默认值约束为1.所有当前行的值都是1.然后删除默认值约束,因此没有默认值。

由于您无法在单个事务中混合使用DDL和DML语句,例如您最初想要执行的操作,因此这是您唯一的选择。