Oracle:修改 varchar 列大小后重新创建数据库视图
Posted
技术标签:
【中文标题】Oracle:修改 varchar 列大小后重新创建数据库视图【英文标题】:Oracle: Recreate database view after modifying varchar column size 【发布时间】:2010-09-08 11:03:57 【问题描述】:我已经对数据库表中的列进行了一些更改(增加了 varchar 的大小),但是我需要刷新表的视图以获取此更改。在 SQL Server 2005 中,我将使用脚本 to -> alter 为视图重新创建脚本。我试图弄清楚 Oracle SQL 命令将是什么来重建视图以显示列的更改?
【问题讨论】:
【参考方案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;
【讨论】:
以上是关于Oracle:修改 varchar 列大小后重新创建数据库视图的主要内容,如果未能解决你的问题,请参考以下文章