本文翻译自Sybase官方文档:http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc36273.1570/html/sprocs/X85190.htm
sp_rename
描述(Description)
更改当前数据库中用户创建的对象或用户定义的数据类型的名称。
语法(Syntax)
sp_rename objname, newname [,“index” | “column”]
参数(Parameters)
objectname
- 是用户创建的对象的原始名称(表,视图,列,存储过程,索引,触发器,缺省值,规则,检查约束,参照约束或用户定义的数据类型)。
- 如果要重命名的对象是表中的列,则 objname 必须采用
table.column
形式。 如果对象是索引,则 objname 必须采用table.indexname
形式。
newname
- 是对象或数据类型的新名称。 该名称必须符合标识符规则,并且必须对当前数据库是唯一的。
index
- 指定要重命名的对象是索引,而不是列。 此参数允许您重命名与列名称相同的索引,而不删除和重新创建索引。
column
- 指定要重命名的对象是列,而不是索引。 此参数是与 index 参数相同的选项。
范例(Example)
-
将titles表重命名为books:
sp_rename titles, books
-
将books表中的title列重命名为bookname:
sp_rename "books.title", bookname
-
将books表中的titleind索引重命名为titleindex:
sp_rename "books.titleind", titleindex
-
将用户定义的数据类型tid重命名为bookid:
sp_rename tid, bookid
-
将titles表中的title_id索引重命名为isbn:
sp_rename "titles.title_id", isbn, "index"
使用(Usage)
-
sp_rename
更改用户创建的对象或数据类型的名称。 您只能更改发出sp_rename
的数据库中的对象或数据类型的名称。 -
重命名列或索引时,请不要在 newname 中指定表名。 参见示例2,3和5。
-
如果列和索引具有相同的名称,请使用
[,“index”| “column”]
参数,指定是否重命名索引或列。 在以下示例中,假设索引和名为 idx 的列都存在:sp_rename "t.idx", new_idx, "column" ------------- Column name has been changed. (Return status = 0) sp_rename "t.idx", new_idx, "index" ------------- Index name has been changed. (Return status = 0)
-
如果更改视图引用的对象或列名称,则会看到警告消息,例如:
Changing an object or column name could break existing stored procedures, cached statements or other compiled objects.
-
如果没有打开的事务,
sp_engine
可以使用链式事务模式在会话中运行。 -
您无法更改系统对象和系统数据类型的名称。
-
警告:依赖于名称已更改的对象的过程,触发器和视图将不再起作用。 在执行
sp_rename
之前更改任何依赖对象的定义。 使用sp_depends
查找依赖对象。