我正在尝试添加和更新列。此代码在交易中。
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
语句,但显然在事务中它是无效的。如何在交易中完成这项工作?
答案 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语句,例如您最初想要执行的操作,因此这是您唯一的选择。