如何在sql server 2008中的表的所有列中允许null?

时间:2013-03-15 10:26:26

标签: sql-server-2008 sql-server-2008-r2

我有一个空表,其中所有列都设置为“NOT NULL”。我想将它设置为ALLOW NULL而不重新创建表。

我该怎么做?我正在使用SQL Server 2008 r2和管理工作室。

修改 - 我想将所有列设置为允许null,而不必知道列的数据类型。也就是说,将all设置为null,同时保持数据类型与以前相同。

1 个答案:

答案 0 :(得分:0)

ALTER COLUMN 指定要更改或更改命名列。 修改后的列不能是以下任何一种:

具有时间戳数据类型的列。

• 表格的ROWGUIDCOL。

• 计算列或在计算列中使用。

• 在索引中使用,除非该列是varchar,nvarchar或varbinary数据类型,数据类型不会更改,新大小等于或大于旧大小,并且索引不是PRIMARY KEY的结果约束

• 除非列是varchar,nvarchar或varbinary数据类型,数据类型未更改,新大小等于或大于旧大小,从非null到null。首先,使用DROP STATISTICS语句删除统计信息。 ALTER COLUMN会自动删除由查询优化器自动生成的统计信息。

• 用于PRIMARY KEY或[FOREIGN KEY] REFERENCES约束。

• 用于CHECK或UNIQUE约束。但是,允许更改CHECK或UNIQUE约束中使用的可变长度列的长度。

• 与默认定义相关联。但是,如果未更改数据类型,则可以更改列的长度,精度或比例。

text,ntext和image列的数据类型只能通过以下方式更改: ◦ text到varchar(max),nvarchar(max)或xml

◦ ntext到varchar(max),nvarchar(max)或xml

◦ 图像到varbinary(最大)

某些数据类型更改可能会导致数据发生更改。例如,将nchar或nvarchar列更改为char或varchar可能会导致扩展字符的转换。有关更多信息,请参阅CAST和CONVERT(Transact-SQL)。降低列的精度或比例可能会导致数据截断。

无法更改分区表的列的数据类型。

该文件可在此处找到: http://msdn.microsoft.com/en-us/library/ms190273(v=sql.105).aspx