SQL中如何使用T-SQL语句修改表的名称?
1个回答
展开全部
sp_rename
更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。
语法
sp_rename
[
@objname
=
]
'object_name
'
,
[
@newname
=
]
'new_name
'
[
,
[
@objtype
=
]
'object_type
'
]
参数
[@objname
=]
'object_name
'
是用户对象(表、视图、列、存储过程、触发器、默认值、数据库、对象或规则)或数据类型的当前名称。如果要重命名的对象是表中的一列,那么
object_name
必须为
table.column
形式。如果要重命名的是索引,那么
object_name
必须为
table.index
形式。object_name
为
nvarchar(776)
类型,无默认值。
[@newname
=]
'new_name
'
是指定对象的新名称。new_name
必须是名称的一部分,并且要遵循标识符的规则。newname
是
sysname
类型,无默认值。
[@objtype
=]
'object_type
'
是要重命名的对象的类型。object_type
为
varchar(13)
类型,其默认值为
NULL,可取下列值。
值
描述
COLUMN
要重命名的列。
DATABASE
用户定义的数据库。要重命名数据库时需用此选项。
INDEX
用户定义的索引。
OBJECT
在
sysobjects
中跟踪的类型的项目。例如,OBJECT
可用来重命名约束(CHECK、FOREIGN
KEY、PRIMARY/UNIQUE
KEY)、用户表、视图、存储过程、触发器和规则等对象。
USERDATATYPE
通过执行
sp_addtype
而添加的用户定义数据类型。
返回代码值
0(成功)或非零数字(失败)
注释
只能更改当前数据库中的对象名称或数据类型名称。大多数系统数据类型和系统对象的名称不能更改。
重命名视图时,sysobjects
表中有关该视图的信息将得到更新。重命名存储过程时,sysobjects
表中有关该过程的信息将得到更新。
每当重命名
PRIMARY
KEY
或
UNIQUE
约束时,sp_rename
都会自动为相关联的索引重命名。如果重命名的索引与
PRIMARY
KEY
约束相关联,那么
sp_rename
也会自动重命名主键。
重要
重命名存储过程和视图后,请清空过程高速缓存以确保所有相关的存储过程和视图都重新编译。
由于存储过程和视图都不存储数据,所以这两种对象均可快速删除和重建。重命名文本对象时,要获得最佳结果,应删除并使用其新名称重新创建对象。
权限
sysadmin
固定服务器角色成员、db_owner
和
db_ddladmin
固定数据库角色成员或对象所有者可以执行
sp_rename。只有
sysadmin
和
dbcreator
固定服务器角色成员才能将
"database
"作为
object_type
来执行
sp_rename。
示例
A.
重命名表
下例将表
customers
重命名为
custs。
EXEC
sp_rename
'customers
',
'custs
'
B.
重命名列
下例将表
customers
中的列
contact
title
重命名为
title。
EXEC
sp_rename
'customers.[contact
title]
',
'title
',
'COLUMN
'
更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。
语法
sp_rename
[
@objname
=
]
'object_name
'
,
[
@newname
=
]
'new_name
'
[
,
[
@objtype
=
]
'object_type
'
]
参数
[@objname
=]
'object_name
'
是用户对象(表、视图、列、存储过程、触发器、默认值、数据库、对象或规则)或数据类型的当前名称。如果要重命名的对象是表中的一列,那么
object_name
必须为
table.column
形式。如果要重命名的是索引,那么
object_name
必须为
table.index
形式。object_name
为
nvarchar(776)
类型,无默认值。
[@newname
=]
'new_name
'
是指定对象的新名称。new_name
必须是名称的一部分,并且要遵循标识符的规则。newname
是
sysname
类型,无默认值。
[@objtype
=]
'object_type
'
是要重命名的对象的类型。object_type
为
varchar(13)
类型,其默认值为
NULL,可取下列值。
值
描述
COLUMN
要重命名的列。
DATABASE
用户定义的数据库。要重命名数据库时需用此选项。
INDEX
用户定义的索引。
OBJECT
在
sysobjects
中跟踪的类型的项目。例如,OBJECT
可用来重命名约束(CHECK、FOREIGN
KEY、PRIMARY/UNIQUE
KEY)、用户表、视图、存储过程、触发器和规则等对象。
USERDATATYPE
通过执行
sp_addtype
而添加的用户定义数据类型。
返回代码值
0(成功)或非零数字(失败)
注释
只能更改当前数据库中的对象名称或数据类型名称。大多数系统数据类型和系统对象的名称不能更改。
重命名视图时,sysobjects
表中有关该视图的信息将得到更新。重命名存储过程时,sysobjects
表中有关该过程的信息将得到更新。
每当重命名
PRIMARY
KEY
或
UNIQUE
约束时,sp_rename
都会自动为相关联的索引重命名。如果重命名的索引与
PRIMARY
KEY
约束相关联,那么
sp_rename
也会自动重命名主键。
重要
重命名存储过程和视图后,请清空过程高速缓存以确保所有相关的存储过程和视图都重新编译。
由于存储过程和视图都不存储数据,所以这两种对象均可快速删除和重建。重命名文本对象时,要获得最佳结果,应删除并使用其新名称重新创建对象。
权限
sysadmin
固定服务器角色成员、db_owner
和
db_ddladmin
固定数据库角色成员或对象所有者可以执行
sp_rename。只有
sysadmin
和
dbcreator
固定服务器角色成员才能将
"database
"作为
object_type
来执行
sp_rename。
示例
A.
重命名表
下例将表
customers
重命名为
custs。
EXEC
sp_rename
'customers
',
'custs
'
B.
重命名列
下例将表
customers
中的列
contact
title
重命名为
title。
EXEC
sp_rename
'customers.[contact
title]
',
'title
',
'COLUMN
'
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询