Lo scopo dell'associazione dello schema a una vista è garantire che le tabelle di base a cui si fa riferimento nella vista non possano essere modificate in modo tale da influire sulla definizione della vista.
Questa è normalmente una buona cosa. Dopotutto, non vuoi che qualcuno arrivi e lasci cadere un tavolo da cui dipende la tua vista, vero?
Ma cosa succede se devi apportare modifiche a una o più tabelle a cui fa riferimento la tua vista?
In questo caso, puoi rimuovere l'associazione dello schema da una vista, apportare le modifiche alla/e tabella/e di base, quindi riapplicare l'associazione dello schema.
Esistono due modi per rimuovere l'associazione dello schema da una vista:
- Modifica la vista in modo che la sua definizione non specifichi più l'associazione dello schema.
- Elimina la vista (quindi ricreala senza l'associazione dello schema, se necessario).
Esempio di vista associata a uno schema
Innanzitutto, ecco un esempio di vista associata a uno schema:
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
Sappiamo che è una vista legata allo schema perché contiene WITH SCHEMABINDING
nella sua definizione. Per rimuovere il binding dello schema, tutto ciò che dobbiamo fare è rimuovere quel bit.
Opzione 1 – Modifica la visualizzazione
Per rimuovere l'associazione dello schema da questa vista alterandola, possiamo utilizzare il codice seguente:
ALTER VIEW dbo.v_Cats AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
Tutto quello che abbiamo fatto è stato cambiare CREATE
a ALTER
e rimuovi WITH SCHEMABINDING
.
Opzione 2:elimina la vista
Ecco un esempio di eliminazione della vista, quindi ricreazione senza associazione dello schema:
DROP VIEW IF EXISTS dbo.v_Cats; GO CREATE VIEW dbo.v_Cats AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
In questo caso, ho utilizzato la sintassi DROP IF EXISTS, che impedisce il verificarsi di un errore nel caso in cui la vista non esistesse.