重命名Oracle表或视图。

66

在Oracle中重命名表或视图的语法是什么?


6
@skaffman: lmgtfy.com/正是你需要的东西 :) (注:lmgtfy是一种网络用语,意为“让我来教你如何搜索”。上述内容是在回应某人提问时给出的建议) - OMG Ponies
5个回答

95
ALTER TABLE mytable RENAME TO othertable

在Oracle 10g中也是如此:

RENAME mytable TO othertable

1
在 Oracle 10g 以下的版本中,视图不再能够被重命名。现在唯一可能的方式是通过删除/重新创建来实现。请参考另一个答案获取示例。 - Wouter

30

要重命名一个表,你可以使用:

RENAME mytable TO othertable;
或者
ALTER TABLE mytable RENAME TO othertable;

或者,如果属于另一个模式:

ALTER TABLE owner.mytable RENAME TO othertable;

有趣的是,ALTER VIEW 不支持重命名视图。不过,您可以:

RENAME myview TO otherview;

RENAME命令适用于表、视图、序列和私有同义词,仅适用于您自己的模式。

如果视图不在您的模式中,您可以使用新名称重新编译视图,然后删除旧视图。

(已在Oracle 10g中测试)


1
在11g中,你给出的初始示例对我不起作用,但第二个可以。 - rogerdpack
请注意,RENAME 在 11g 和 12g 中仍然可用 - 参见 http://docs.oracle.com/database/121/SQLRF/statements_9020.htm#SQLRF01608 - Jeffrey Kemp

12

要重命名不同模式下的表,请尝试以下操作:

ALTER TABLE owner.mytable RENAME TO othertable;

重命名命令(如"rename mytable to othertable")只支持将表重命名为相同架构中的表。


1

可以用同样的方式重命名索引

alter index owner.index_name rename to new_name;

1
更适合作为评论而不是答案。 - Wouter

1

过了10g版本,当前的答案不再适用于重命名视图。唯一仍然有效的方法是删除并重新创建视图。我能想到的最好的方法是:

SELECT TEXT FROM ALL_VIEWS WHERE owner='some_schema' and VIEW_NAME='some_view';

在返回的SQL语句前添加以下内容:

Create or replace view some_schema.new_view_name as ...

删除旧视图

Drop view some_schema.some_view;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接