停止在表列中允许null

时间:2014-03-14 11:49:01

标签: sql sql-server alter-table tablecolumn

我在SQL server 2008中有一个表。 我需要一个到目前为止没有必要的列,不再允许NULL,而不需要删除表。 我试着做这样的事情:

ALTER TABLE [Sessions] ALTER COLUMN region_id NOT NULL;

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

4 个答案:

答案 0 :(得分:1)

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

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

而不是-1,你应该选择一些代表以前的NULL值的东西,这样你就可以区分它们了。

为了避免豁免,您可以继续:

工具>选项>设计师与GT;和取消忽略需要重新创建表的保存更改

答案 1 :(得分:1)

您缺少数据类型。

  

ALTER TABLE [Sessions] ALTER COLUMN region_id int NOT NULL;

答案 2 :(得分:1)

您必须在alter a column

时指定数据类型
ALTER TABLE [Sessions] ALTER COLUMN region_id int /* ? */ NOT NULL;

答案 3 :(得分:1)

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

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

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

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