【发布时间】:2010-09-08 11:03:57
【问题描述】:
我已经对数据库表中的列进行了一些更改(增加了 varchar 的大小),但是我需要刷新表的视图以获取此更改。在 SQL Server 2005 中,我将使用脚本 to -> alter 为视图重新创建脚本。我试图弄清楚 Oracle SQL 命令将是什么来重建视图以显示列的更改?
【问题讨论】:
标签: oracle
我已经对数据库表中的列进行了一些更改(增加了 varchar 的大小),但是我需要刷新表的视图以获取此更改。在 SQL Server 2005 中,我将使用脚本 to -> alter 为视图重新创建脚本。我试图弄清楚 Oracle SQL 命令将是什么来重建视图以显示列的更改?
【问题讨论】:
标签: oracle
除非您的视图明确限制列的大小,否则它将自动获取更改。它可能已因表更改而失效,但在首次使用时会自动重新编译;或者可以使用alter view <view name> compile手动重新编译。
【讨论】:
如果你这样做:
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 会自动执行此操作。
【讨论】:
试试
ALTER VIEW MyView COMPILE;
【讨论】: