Domanda

Perché devo scrivere 'aggiorna la vista' script, e di eseguirli ogni volta che aggiungi o modifica di alcuni campi in vista?

SQL Server capisce che è necessario aggiornare la visualizzazione quando si modifica nella fantasia modifica visualizzazione di windows in Management Studio, perché non è solo raccontare la sua vista per andare a rifocillarsi dopo la modifica la vista attraverso uno script?

È stato utile?

Soluzione

Vista devono essere aggiornati se le tabelle sottostanti cambiano affatto. Che possono cambiare i tipi di dati delle colonne della vista o riorganizzare i propri indici. Pertanto, ha bisogno di sapere. In caso contrario, ci si esegue una query contro di esso, e che sarebbe saltare in aria abbastanza rapidamente.

Non si dovrebbe avere a correre sp_refreshview per alterare la vista. Solo per alterarne le tabelle sottostanti.

Inoltre, si prega di non prendere in giro felice divertirsi palla.

Edit: appena eseguito questo codice (in successione) per tentare di riprodurre il problema. Io ero, purtroppo, incapace di, come ha funzionato come previsto (SQL Server 2008):

create view MyView
as
select ProductKey, ProductID, ProductName, Price
from dbo.Products

select v.* from MyView v

alter view MyView
as
select ProductKey, ProductID, ProductName, Price*100 as MyPrice
from dbo. Products

select v.* from MyView v

Altri suggerimenti

Utilizzare CON SCHEMABINDING in vista della definizione di eliminare la necessità per qualsiasi aggiorna

E in combinazione con l'ALTER VISTA, non il designer

Modifica, Lug 2012, dal link di cui sopra.Il mio bold

SCHEMABINDING

Si lega la vista per lo schema delle tabelle sottostanti.Quando SCHEMABINDING è specificato, la tabella di base o tabelle non può essere modificato in un modo che influiscono sulla definizione della vista.La definizione della vista, è necessario essere modificate o eliminate per rimuovere le dipendenze la tabella che deve essere modificato.Quando si utilizza SCHEMABINDING, il select_statement deve includere i nomi in due parti (schema.oggetto) delle tabelle, viste, o funzioni definite dall'utente a cui fa riferimento.Tutti oggetti di riferimento deve essere lo stesso database.

Vista o tabelle che fanno parte di una vista creata con la clausola SCHEMABINDING non può essere eliminato a meno che la vista è eliminata o modificata in modo che non si dispone di uno schema.In caso contrario, il Motore di Database genera un errore.Inoltre, l'esecuzione di ALTER TABLE su tabelle che fanno parte di viste schema di esito negativo quando modificano la definizione della vista.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top