2013-03-15 78 views
0

我有一个空表,其中所有列都设置为“NOT NULL”。我想将它设置为允许NULL而不重新创建表。如何在sql server 2008中的表的所有列中允许null?

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

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

+0

写TSQL或使用SSMS表设计视图 – 2013-03-15 10:27:14

+0

@MitchWheat - 我不明白你在说什么。请更详细地解释它。 – 2013-03-15 10:29:54

+1

你为什么想这样做?如果所有列都是“NULL”,则表格将无法拥有主键。 – 2013-03-15 10:29:56

回答

0

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

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

• 该表的ROWGUIDCOL。

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

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

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

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

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

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

文本的数据类型,ntext和image列可以仅在以下方面有所变化: ◦ 文本为varchar(最大),为nvarchar(最大),或者XML

◦ NTEXT为varchar(最大值),为nvarchar(最大),或者XML

◦ 图像VARBINARY(最大)

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

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

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

+1

不好回答,没用。但是,我会拿分。谢谢。 – 2013-03-16 01:17:34

相关问题