我在 SQL Server 2008 中有一个表。我需要一个直到现在还没有必要的列,不再允许NULL
,而不删除表。我试图做这样的事情:
ALTER TABLE [Sessions] ALTER COLUMN region_id NOT NULL;
编辑:这是一个小的语法错误。解决了。
我在 SQL Server 2008 中有一个表。我需要一个直到现在还没有必要的列,不再允许NULL
,而不删除表。我试图做这样的事情:
ALTER TABLE [Sessions] ALTER COLUMN region_id NOT NULL;
编辑:这是一个小的语法错误。解决了。
更改列时还必须指定数据类型:
ALTER TABLE [Sessions] ALTER COLUMN region_id int /* ? */ NOT NULL;
您必须首先将所有为 NULL 的值设置为非 NULL 值:
UPDATE [Sessions]
SET region_id=-1
WHERE region_id IS NULL
您应该选择代表以前 NULL 值的东西,而不是 -1,以便区分它们。
为了摆脱储蓄预防,您可以继续:
工具>选项>设计器>并取消单击阻止保存需要重新创建表的更改
您缺少数据类型。
ALTER TABLE [会话] ALTER COLUMN region_id int NOT NULL;
首先要保存这样的表格机会,您需要编写更改脚本,或者从 UI 保存时,您需要设置 SSMS 为您删除并重新创建表格。去做这个;
转到工具选项设计器 UNTICK 防止保存需要重新创建表的更改。
如果您编写更改脚本,您将需要首先更改表,并添加一个允许空值的新列。然后更新列并删除空值,然后您就可以将列设置为 NOT NULL。
如果您按照这些步骤操作,您将解决您的问题。