创建sql列并更新它
我正在尝试在表中创建一个新列。我想让它不可为空。我不想使用默认约束 我尝试了以下查询。但它失败了 请纠正我这里或建议,如果有更好的选择存在创建sql列并更新它,sql,sql-server-2008,Sql,Sql Server 2008,我正在尝试在表中创建一个新列。我想让它不可为空。我不想使用默认约束 我尝试了以下查询。但它失败了 请纠正我这里或建议,如果有更好的选择存在 ALTER TABLE [dbo].[UCBCluster] ADD PBXClusterId INT NULL; UPDATE [dbo].[UCBCluster] SET PBXClusterId = 0 WHERE PBXClusterId IS NULL; ALTER TABLE [dbo].[UCBCluster] ALTER COL
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;
错误:
味精207,16级,状态1,第5行列名“PBXClusterId”无效
谢谢您必须保留默认成本,然后只有您可以更改为NOTNULL
ALTER TABLE [dbo].[UCBCluster]
add constraint cnt_column Default '' for PBXClusterId
ALTER TABLE tb_TableName
ALTER COLUMN PBXClusterId int 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 Server中的同一批SQL语句中运行DDL语句(数据定义语言-用于修改数据库结构的语句)和DML语句(数据操作语言-添加或更新数据)通常不是一个好主意我不想使用默认约束。我想让它成为一个必填字段。我不想使用默认约束。我想让它成为一个必填字段。我用sqlfiddle试过了,你的查询很好。哪一行是5号线?
ALTER TABLE [dbo].[UCBCluster] ALTER COLUMN
PBXClusterId INT CHECK (PBXClusterId IS NOT NULL);
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;