【问题标题】:How to allow null in all columns of a table in sql server 2008? [duplicate]如何在 sql server 2008 中的表的所有列中允许 null? [复制]
【发布时间】:2013-03-15 10:26:25
【问题描述】:

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

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

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

【问题讨论】:

  • 写TSQL或者使用SSMS表设计视图
  • @MitchWheat - 我不明白你在说什么。请详细说明。
  • 为什么要这样做?如果所有列都是NULL-able,则表将无法拥有主键。
  • @TimSchmelter - 不完全是重复的。我想将所有设置为允许 null 而不必知道列的数据类型。
  • @sql.learner: 能够做某事,并且这样做是个好主意不一定是同一件事。

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


【解决方案1】:

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

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

• 表的 ROWGUIDCOL。

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

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

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

• 在 PRIMARY KEY 或 [FOREIGN KEY] REFERENCES 约束中使用。

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

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

text、ntext 和 image 列的数据类型只能通过以下方式更改: ◦ 文本到 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

【讨论】:

  • 错误的答案,没有用。但是,我会记分的。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 2017-08-11
  • 1970-01-01
  • 2018-04-11
  • 2016-03-06
相关资源
最近更新 更多