0

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

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

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

4

1 回答 1

0

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

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

• 表的ROWGUIDCOL。

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

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

• 用于由 CREATE STATISTICS 语句生成的统计信息,除非列是 varchar、nvarchar 或 varbinary 数据类型,数据类型未更改,并且新大小等于或大于旧大小,或者列是从不为空更改为空。首先,使用 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(max)

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

分区表的列的数据类型不能更改。

该文档可以在这里找到:http: //msdn.microsoft.com/en-us/library/ms190273 (v=sql.105).aspx

于 2013-03-15T12:40:30.137 回答