创建一个sql列更新
我试图在表中创建一个新的列。我想让它不可空。我不想使用默认约束。创建一个sql列更新
我试过以下查询。但它失败了。
请在这里改正我或建议您是否有更好的选择。
ALTER TABLE [dbo].[UCBCluster]
ADD PBXClusterId INT NULL;
UPDATE [dbo].[UCBCluster]
SET PBXClusterId = 0
WHERE PBXClusterId IS NULL;
ALTER TABLE [dbo].[UCBCluster]
ALTER COLUMN PBXClusterId INT NOT NULL;
错误:
Msg 207, Level 16, State 1, Line 5
Invalid column name 'PBXClusterId'.
感谢
哟必须保持默认costraint那么只有您可以更改为NOT NULL
ALTER TABLE [dbo].[UCBCluster]
add constraint cnt_column Default '' for PBXClusterId
ALTER TABLE tb_TableName
ALTER COLUMN PBXClusterId int NOT NULL
我不想去默认约束。我想把它作为一个必填字段。 – Raghav 2015-03-03 06:36:30
ALTER TABLE [dbo].[UCBCluster] ADD PBXClusterId INT NOT NULL Default '0';
我不想去默认约束。我想把它作为一个必填字段。 – Raghav 2015-03-03 06:36:34
您可以使用检查约束
I wanted to make it a mandatory field
ALTER TABLE [dbo].[UCBCluster] ALTER COLUMN
PBXClusterId INT CHECK (PBXClusterId IS NOT NULL);
不能在单个批处理中运行所有这一切,因为SQL Server将在执行开始分析它,并在那个时候,没有PBXClusterId
列还不存在。
您需要在三个不同批次运行这一点 - 无论是只强调它在Management Studio,或者如果你想运行它作为一个,你需要把你的步骤之间GO
分隔符:
ALTER TABLE [dbo].[UCBCluster]
ADD PBXClusterId INT NULL;
GO;
UPDATE [dbo].[UCBCluster]
SET PBXClusterId = 0
WHERE PBXClusterId IS NULL;
GO;
ALTER TABLE [dbo].[UCBCluster]
ALTER COLUMN PBXClusterId INT NOT NULL;
GO;
在同一批SQL语句中运行DDL语句(数据定义语言 - 语句修改数据库结构)和DML语句(数据操作语言 - 添加或更新数据)通常不是一个好主意SQL Server
我试过用sqlfiddle,你的查询工作正常。哪一行是第5行? – Jens 2015-03-03 06:39:29