我在SQL server 2008中有一个表。
我需要一个到目前为止没有必要的列,不再允许NULL
,而不需要删除表。
我试着做这样的事情:
ALTER TABLE [Sessions] ALTER COLUMN region_id NOT NULL;
编辑:这是一个小的语法错误。解决。
答案 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。
如果您按照这些步骤操作,则可以解决您的问题。