gpt4 book ai didi

sql - 如何同时修改表和 View 中一列的长度?

转载 作者:行者123 更新时间:2023-12-04 02:15:26 27 4
gpt4 key购买 nike

我在 oracle 数据库中有一个表。我已将一列的长度从 VARCHAR2(50) 更改为 VARCHAR2(100)。问题是列的长度在 View 中没有改变。有什么建议吗?

我正在使用 ORACLE SQL Developer 版本 4.0.2.15

最佳答案

表更改后, View 变为无效状态,您必须 recompile the view或者简单地从 View 中选择以使其再次有效并具有正确的定义。虽然 View 无效,但它保留了旧定义,也就是您所看到的。

见下图

create table tab 
(col1 varchar2(50));

create or replace view vtab as select col1 from tab;

select table_name, data_length from user_tab_columns where column_name = 'COL1';

TABLE_NAME DATA_LENGTH
---------- -----------
TAB 50
VTAB 50

alter table tab modify (col1 varchar2(100));

select table_name, data_length from user_tab_columns where column_name = 'COL1';

TABLE_NAME DATA_LENGTH
---------- -----------
TAB 100
VTAB 50

select status from user_objects where object_name = 'VTAB';

STATUS
-------
INVALID

View 无效,因此列长度错误。编译 View 或简单问题 select * from VTAB

alter view vtab compile;

select table_name, data_length from user_tab_columns where column_name = 'COL1';

TABLE_NAME DATA_LENGTH
---------- -----------
TAB 100
VTAB 100

关于sql - 如何同时修改表和 View 中一列的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34378573/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com