2010-09-08 4 views
1

J'ai apporté quelques modifications à colonnes dans une table de base de données (augmentation de la taille de varchar), mais je dois avoir la vue de la table rafraîchi pour ramasser ce changement. Dans SQL Server 2005, j'utiliserais le script pour -> alter pour recréer le script pour la vue. J'essaie de comprendre ce que la commande SQL Oracle serait de reconstruire la vue pour afficher le changement de la colonne?Oracle: vue base de données Recréer après avoir modifié la taille de la colonne varchar

Répondre

1

Si vous le faites:

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); 

Vous ne faites rien pour promouvoir ce changement en vue dans la base de données Oracle. Ou vous pouvez utiliser "ALTER VIEW sample_view COMPILE" (comment a écrit @AlexPole ou @devio). Oracle le fait automatiquement lorsque vous utilisez d'abord select sur sample_view après alter table.

6

À moins que votre point de vue restreint explicitement la taille de la colonne, il reprendra automatiquement le changement. Il peut avoir été invalidé par le changement de table mais sera automatiquement recompilé lors de la première utilisation; ou peut être recompilé manuellement avec alter view <view name> compile.

+0

salut. Existe-t-il un moyen de vérifier quel changement a causé l'invalidité de la vue? –

+0

@sonic - pas que je suis au courant de la main, mais il peut y avoir quelque chose dans le dictionnaire de données si vous pouvez creuser assez profond. Vous pouvez certainement voir les dépendances pour avoir une idée si un changement peut invalider n'importe quoi. Vous devriez poser cette question comme une nouvelle question, probablement sur [dba.se]. –

+0

merci Alex. Ya j'ai la requête qui montre toutes les dépendances. Mais il y a beaucoup de dépendances et il est difficile de trouver lequel rend l'objet invalide. –

0

Essayez

ALTER VIEW MyView COMPILE; 
Questions connexes