2015-12-20 3 views
2

У меня есть таблица в базе данных оракула. Я изменил длину одного столбца от VARCHAR2(50) до VARCHAR2(100). Проблема в том, что длина столбца не изменяется в представлениях. какие-либо предложения?Как изменить длину одного столбца в таблице и просмотреть одновременно?

Я использую ORACLE SQL Developer Version 4.0.2.15.

+0

Как вы определяете, что длина не меняется? У меня нет этой проблемы. – sstan

+0

Вид основан только на базовой таблице, поэтому, когда у вас будет строка длиной не более 50 символов, вы увидите это и в представлении. VARCHAR2 - это тип данных переменной длины, поэтому увеличение размера не увеличивает длину существующей строки. ** Возможно, вам просто нужно щелкнуть правой кнопкой мыши на 'VIEWS' в' connection' в SQL Developer и нажать «refresh». ** –

+0

Обновить вашу базу данных. – MaxPD

ответ

3

После изменения таблицы представление получает НЕВЕРНОЕ состояние, вы должны либо recompile the 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 

мнение является недействительным, поэтому длина колонки неправильно. Скомпилировать представление или простой выпуск 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 
Смежные вопросы