【问题标题】:Oracle: Recreate database view after modifying varchar column sizeOracle:修改 varchar 列大小后重新创建数据库视图
【发布时间】:2010-09-08 11:03:57
【问题描述】:

我已经对数据库表中的列进行了一些更改(增加了 varchar 的大小),但是我需要刷新表的视图以获取此更改。在 SQL Server 2005 中,我将使用脚本 to -> alter 为视图重新创建脚本。我试图弄清楚 Oracle SQL 命令将是什么来重建视图以显示列的更改?

【问题讨论】:

    标签: oracle


    【解决方案1】:

    除非您的视图明确限制列的大小,否则它将自动获取更改。它可能已因表更改而失效,但在首次使用时会自动重新编译;或者可以使用alter view <view name> compile手动重新编译。

    【讨论】:

    • 嗨。有什么方法可以检查导致视图无效的更改是什么?
    • @sonic - 并不是说​​我不知道​​副手,但如果你能深入挖掘,数据字典中可能会有一些东西。您当然可以查看依赖关系,以了解更改是否会使任何内容无效。您应该将此作为一个新问题提出,可能在 Database Administrators 上。
    • 谢谢亚历克斯。是的,我有显示所有依赖项的查询。但是有很多依赖项,很难找到哪个使对象无效。
    【解决方案2】:

    如果你这样做:

    create table sample_table(text varchar2(10));
    insert into sample_table (text) values('text...');
    create view sample_view as select * from sample_table;
    select * from sample_view;
    alter table sample_table modify text varchar2(200);
    

    您没有做任何事情来促进 Oracle 数据库中的这种视图变化。

    或者您可以使用“ALTER VIEW sample_view COMPILE”(@AlexPole 或 @devio 的写法)。当您在更改表后首次在 sample_view 上使用 select 时,Oracle 会自动执行此操作。

    【讨论】:

      【解决方案3】:

      试试

      ALTER VIEW MyView COMPILE;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-30
        • 1970-01-01
        • 2017-01-10
        相关资源
        最近更新 更多