Un altro uso che nessuna delle risposte precedenti sembra aver menzionato è la distribuzione più semplice delle modifiche alla struttura della tabella.
Supponiamo che desideri ritirare una tabella ( T_OLD) contenente dati per utenti attivi e utilizzare invece una nuova tabella con dati simili (denominati T_NEW) ma che contenga dati sia per gli utenti attivi che per quelli inattivi, con una colonna in piùactive .
Se i tuoi sistemi hanno miliardi di query che lo fanno SELECT whatever FROM T_OLD WHERE whatever , hai due scelte per il lancio:
1) Tacchino freddo - Cambia il DB e, allo stesso tempo, cambia, testa e rilascia numerosi pezzi di codice che contenevano detta query. MOLTO difficile da fare (o anche da coordinare), molto rischioso. Male.
2) Graduale : cambia il DB creando la T_NEWtabella, rilasciando la T_OLDtabella e creando invece una VIEW chiamata T_OLDche imita la T_OLDtabella al 100% (ad esempio, la query di visualizzazione èSELECT all_fields_except_active FROM T_NEW WHERE active=1 ).
Ciò consentirebbe di evitare di rilasciare QUALSIASI codice che attualmente seleziona da T_OLDe di apportare le modifiche per migrare il codice da T_OLDa T_NEWa piacimento.
Questo è un semplice esempio, ce ne sono altri molto più coinvolti.
PS D'altra parte, probabilmente avresti dovuto avere un'API di stored procedure invece di query dirette da T_OLD, ma non è sempre così.