Sql 停止在表列中允许null
我在SQLServer2008中有一个表。 我需要一个到目前为止都不需要的列,不再允许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,这样您就可以区分它们了
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;