Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 停止在表列中允许null_Sql_Sql Server_Alter Table_Tablecolumn - Fatal编程技术网

Sql 停止在表列中允许null

Sql 停止在表列中允许null,sql,sql-server,alter-table,tablecolumn,Sql,Sql Server,Alter Table,Tablecolumn,我在SQLServer2008中有一个表。 我需要一个到目前为止都不需要的列,不再允许NULL,而不删除表。 我试着这样做: ALTER TABLE [Sessions] ALTER COLUMN region_id NOT NULL; 编辑:这是一个小的语法错误。已解决。您必须首先将所有空值设置为非空值: UPDATE [Sessions] SET region_id=-1 WHERE region_id IS NULL 您应该选择一些表示以前的空值的值来代替-1,这样您就可以区分它们了

我在SQLServer2008中有一个表。 我需要一个到目前为止都不需要的列,不再允许
NULL
,而不删除表。 我试着这样做:

ALTER TABLE [Sessions] ALTER COLUMN region_id NOT NULL;

编辑:这是一个小的语法错误。已解决。

您必须首先将所有空值设置为非空值:

UPDATE [Sessions] 
SET region_id=-1
WHERE region_id IS NULL
您应该选择一些表示以前的空值的值来代替-1,这样您就可以区分它们了

要想摆脱储蓄预防,您可以继续:


工具>选项>设计器>和取消单击可防止保存需要重新创建表的更改

您缺少数据类型

ALTER TABLE[Sessions]ALTER COLUMN region_idint不为空


在执行以下操作时,还必须指定数据类型:


首先,要保存这样的表,您需要编写更改脚本,或者从UI保存时,需要设置SSM以删除并重新创建表。这样做

转到工具 选择权 设计师 取消勾选阻止保存需要重新创建表的更改

如果编写更改脚本,则需要首先修改表,并添加一个允许空值的新列。然后更新列并删除空值,然后可以将列设置为NOTNULL


如果您遵循这些步骤,您将解决您的问题。

“我尝试过这样做”。。。发生了什么?如果你在问题中包含语法错误消息,你就不会得到答案。不,这肯定不是你在问题中运行查询时得到的消息。这是您在尝试使用SSMS的表设计器更改可空性时收到的消息。您收到的消息是什么?“不允许在中保存更改。您所做的更改需要删除并重新创建以下表”。您应该在alter column脚本中指定区域id列的类型
ALTER TABLE [Sessions] ALTER COLUMN region_id int /* ? */ NOT NULL;