当前位置:首页 > SCHOOL > Oracle字典 > 正文内容

Oracle Rename表

admin3年前 (2022-03-26)Oracle字典3970

在本教程中,您将学习如何使用Oracle RENAME表语句重命名数据库中的现有表。

要重命名表,可以使用以下Oracle RENAME表语句,如下所示:

RENAME table_name TO new_name;

在RENAME表语句中:

(1)指定将要重命名的表名称。

(2)指定新的表名。新名称不能与同一模式中的另一个表相同。

请注意,一旦执行了RENAME语句,就不能回滚了。

当重命名表时,Oracle自动将旧表上的索引,约束和授权转移到新表上。 另外,它使依赖重命名表(原表)的所有对象失效,如视图,存储过程,函数和同义词。

Oracle RENAME表的例子

我们来创建一个名为promotions表,用来作演示。

CREATE TABLE promotions(
    promotion_id NUMBER GENERATED BY DEFAULT AS IDENTITY,
    promotion_name varchar2(255),
    start_date DATE NOT NULL,
    end_date DATE NOT NULL,
    PRIMARY KEY(promotion_id),
    CHECK (end_date > start_date)
);

以下PL/SQL函数通过查询promotions表中的数据来返回促销的数量:

CREATE OR REPLACE FUNCTION count_promotions
  RETURN NUMBER
IS
  v_count NUMBER;
BEGIN
  SELECT
    COUNT( * )
  INTO
    v_count
  FROM
    promotions;
  RETURN v_count;
END;

要将promotions表重命名为campaigns表,可以使用以下语句:

RENAME promotions TO campaigns;

如上面所述,Oracle将promotions表中的所有索引,约束和授权转移到campaigns表中。 以下语句显示了从promotions表传输的新campaigns表的限制条件:

SELECT
    OBJECT_TYPE,OBJECT_NAME,status
FROM
    all_objects
WHERE
    status = 'INVALID' and OWNER='OT' ;

因为COUNT_PROMOTIONS函数引用了promotions表,所以当重命名promotions表时,COUNT_PROMOTIONS函数变得无效。

要查找当前模式中的无效对象,可以从all_objects视图中查询数据,如下所示:

SELECT
    owner,
    object_type,
    object_name
FROM
    all_objects
WHERE
    status = 'INVALID'
ORDER BY
    object_type,
    object_name;

执行上面查询语句,得到以下结果

如上查询结果所示,该语句返回COUNT_PROMOTIONS函数作为无效的对象。

 您阅读本篇文章共花了: 

免责声明
本站内容均为博客主本人日常使用记录的存档,如侵犯你的权益请联系:lifei@zaiheze.com 546262132@qq.com 沟通删除事宜。本站仅带访问端口形式使用,已杜绝搜索引擎爬取。
标签: 数据定义

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。