-6

我在 SQL Server 2008 中有一个表。我需要一个直到现在还没有必要的列,不再允许NULL,而不删除表。我试图做这样的事情:

ALTER TABLE [Sessions] ALTER COLUMN region_id NOT NULL;

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

4

4 回答 4

2

更改列时还必须指定数据类型:

ALTER TABLE [Sessions] ALTER COLUMN region_id int /* ? */ NOT NULL;
于 2014-03-14T11:56:28.910 回答
1

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

UPDATE [Sessions] 
SET region_id=-1
WHERE region_id IS NULL

您应该选择代表以前 NULL 值的东西,而不是 -1,以便区分它们。

为了摆脱储蓄预防,您可以继续:

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

于 2014-03-14T11:51:32.357 回答
1

您缺少数据类型。

ALTER TABLE [会话] ALTER COLUMN region_id int NOT NULL;

于 2014-03-14T11:56:09.783 回答
1

首先要保存这样的表格机会,您需要编写更改脚本,或者从 UI 保存时,您需要设置 SSMS 为您删除并重新创建表格。去做这个;

转到工具选项设计器 UNTICK 防止保存需要重新创建表的更改。

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

如果您按照这些步骤操作,您将解决您的问题。

于 2014-03-14T11:59:10.657 回答