sql server 2005 T-SQL ALTER TABLE (Transact-SQL)

通过更改、添加或删除列和约束,重新分配分区,或者启用或禁用约束和触发器,从而修改表的定义。 Transact-SQL 语法约定 语法 ALTER TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name { ALTER COLUMN column_name {
摘要由CSDN通过智能技术生成

通过更改、添加或删除列和约束,重新分配分区,或者启用或禁用约束和触发器,从而修改表的定义。

主题链接图标 Transact-SQL 语法约定

ALTER TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name 
{
ALTER COLUMN column_name
{
[ type_schema_name. ] type_name [ ( { precision [ , scale ]
| max | xml_schema_collection } ) ]
[ COLLATE collation_name ]
[ NULL | NOT NULL ]
| {ADD | DROP } { ROWGUIDCOL | PERSISTED | NOT FOR REPLICATION}
}
    | [ WITH { CHECK | NOCHECK } ] ADD
   {
<column_definition>
   | <computed_column_definition>
   | <table_constraint>
   } [ ,...n ]
    | DROP
   {
[ CONSTRAINT ] constraint_name
    [ WITH ( <drop_clustered_constraint_option> [ ,...n ] ) ]
| COLUMN column_name
} [ ,...n ]
    | [ WITH { CHECK | NOCHECK } ] { CHECK | NOCHECK } CONSTRAINT
   { ALL | constraint_name [ ,...n ] }
    | { ENABLE | DISABLE } TRIGGER
   { ALL | trigger_name [ ,...n ] }
    | SWITCH [ PARTITION source_partition_number_expression ]
   TO target_table
[ PARTITION target_partition_number_expression ]
}
[ ; ]

<drop_clustered_constraint_option> ::=
{
MAXDOP = max_degree_of_parallelism
| ONLINE = {ON | OFF }
| MOVE TO { partition_scheme_name ( column_name ) | filegroup
| "default"}
}
database_name

要在其中创建表的数据库的名称。

schema_name

表所属架构的名称。

table_name

要更改的表的名称。如果表不在当前数据库中,或者不包含在当前用户所拥有的架构中,则必须显式指定数据库和架构。

ALTER COLUMN

指定要更改命名列。如果兼容级别等于或低于 65,则不允许使用 ALTER COLUMN。有关详细信息,请参阅 sp_dbcmptlevel (Transact-SQL)

修改后的列不能为下列任何一种列:

  • 数据类型为 timestamp 的列。
  • 表的 ROWGUIDCOL 列。
  • 计算列或用于计算列的列。
  • 用在索引中的列,除非该列数据类型为 varcharnvarcharvarbinary,数据类型没有更改,而且新列大小等于或者大于旧列大小。
  • 用于由 CREATE STATISTICS 语句生成的统计信息中的列。首先,用 DROP STATISTICS 语句删除统计信息。由查询优化器自动生成的统计信息将被 ALTER COLUMN 自动删除。
  • 用于 PRIMARY KEY 或 [FOREIGN KEY] REFERENCES 约束中的列。
  • 用于 CHECK 或 UNIQUE 约束中的列。但是,允许更改用于 CHECK 或 UNIQUE 约束中的长度可变的列的长度。
  • 与默认定义关联的列。但是,如果不更改数据类型,则可以更改列的长度、精度或小数位数。
    仅能通过下列方式更改 textntextimage 列的数据类型:
    • text 改为 varchar(max)nvarchar(max)xml
    • ntext 改为 varchar(max)nvarchar(max)xml
    • image 改为 varbinary(max)
    某些数据类型的更改可能导致数据的更改。例如,如果将 ncharnvarchar 列改为 charvarchar,则可能导致转换扩展字符。有关详细信息,请参阅 CAST 和 CONVERT (Transact-SQL)。降低列的精度或减少小数位数可能导致数据截断。
    无法更改已分区表的列的数据类型。
column_name

要更改、添加或删除的列的名称。column_name 最多可以包含 128 个字符。对于新列,如果创建列时使用的数据类型为 timestamp,则可以省略 column_name。对于数据类型为 timestamp 的列,如果未指定 column_name,则使用名称 timestamp

[ type_schema_name . ] type_name

更改后的列的新数据类型或添加的列的数据类型。不能为已分区表的现有列指定 type_nametype_name 可以为下列任意一种类型:

  • SQL Server 2005 系统数据类型。
  • 基于 SQL Server 系统数据类型的别名数据类型。必须先用 CREATE TYPE 语句创建别名数据类型,然后才能将其用于表定义中。
  • .NET Framework 用户定义类型及其所属的架构。只有在使用 CREATE TYPE 语句创建了 .NET Framework 用户定义类型后,才能将其用于表定义。

更改后的列的 type_name 应符合下列条件:

  • 以前的数据类型必须可以隐式转换为新数据类型。
  • type_name 不能为 timestamp
  • 对于 ALTER COLUMN,ANSI_NULL 默认值始终为 ON;如果没有指定,列可为空。
  • 对于 ALTER COLUMN,ANSI_PADDING 填充始终为 ON。
  • 如果修改后的列是标识列,则 new_data_type 必须是支持标识属性的数据类型。
  • 当前的 SET ARITHABORT 设置将被忽略。ALTER TABLE 的操作方式与 ARITHABORT 设置为 ON 时相同。
注意:
如果未指定 COLLATE 子句,则更改列的数据类型将导致更改数据库的默认排序规则。
precision

指定的数据类型的精度。有关有效精度值的详细信息,请参阅精度、小数位数和长度 (Transact-SQL)

scale

是指定数据类型的小数位数。有关有效小数位数值的详细信息,请参阅精度、小数位数和长度 (Transact-SQL)

max

仅应用于 varcharnvarcharvarbinary 数据类型,以便存储 2^31-1 个字节的字符、二进制数据以及 Unicode 数据。

xml_schema_collection

仅应用于 xml 数据类型,以便将 XML 架构与类型相关联。在架构集合中键入 xml 列之前,必须首先使用 CREATE XML SCHEMA COLLECTION 在数据库中创建架构集合。

COLLATE < collation_name >

指定更改后的列的新排序规则。如果未指定,则为该列分配数据库的默认排序规则。排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。有关列表及详细信息,请参阅 Windows 排序规则名称 (Transact-SQL)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值