Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建sql列并更新它_Sql_Sql Server 2008 - Fatal编程技术网

创建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;