Formazione MySQL – creare VIEW aggiornabili

mysql-logo

In questa sessione della formazione MySQL vedremo come si creano le VIEW in cui è possibile modificare i dati al loro interno, e quali caratteristiche devono avere le VIEW per poter essere aggiornabili.

In MySQL le view non sono in sola lettura, sono per default anche aggiornabili. Quindi per creare una view aggiornabile non dovremo fare altro che utilizzare il normale comando CREATE VIEW.

Tuttavia non tutte le view sono aggiornabili, per poter accedere in scrittura ad una view devono essere soddisfatti alcuni requisiti:

  • Il comando SELECT si deve riferire ad una sola tabella. Sono quindi escluse le JOIN tra più tabelle. (In realtà ci sono delle eccezioni che ammettono alcuni tipi di JOIN, ma anche in questi casi ci sono molte limitazioni nelle possibilità di aggiornamento).
  • Il comando SELECT non deve contenere le clausole GROUP BY, HAVING o DISTINCT.
  • Il comando SELECT non si deve riferire ad una view che è read only (non soddisfa i requisiti per essere aggiornabile).
  • Il comando SELECT non deve contenere nessuna funzione di aggregazione o espressione di calcolo.

Se tutte le condizioni di sopra sono soddisfatte la view creata sarà aggiornabile, altrimenti sarà read only.

Nella lezione precedente di questa formazione MySQL avevamo creato tre view chiamate view_data_nascita, view_numero_qualifiche e view_titolo. Vediamo quali di queste sono aggiornabili e quali no.

Database MySQL – Esempi VIEW aggiornabili

Abbiamo creato una view chiamata view_titolo con il seguente comando:

Secondo le condizioni indicate sopra, la view dovrebbe essere aggiornabile. Vediamo se è vero:

Sembra che abbia funzionato, vediamo se è vero:

Come riprova vediamo anche il contenuto della tabella dati_dipendente per vedere se il valore è cambiato:

Anche dentro la tabella il valore è stato modificato dopo l’aggiornamento della view.

Database MySQL – Esempi VIEW non aggiornabili

Proviamo adesso ad aggiornare un dato di una view che non soddisfa i criteri elencati sopra, e quindi non risulta aggiornabile. Abbiamo la view view_numero_qualifiche che è stata creata con il comando:

Poiché questa view non è aggiornabile (è read only) il tentativo di modifica restituirà un messaggio di errore:

Come previsto mysql restituisce un messaggio di errore informandoci che non può effettuare un UPDATE sulla view indicata.

Esercizi

  1. Crea una view che contenga il nome, il cognome del dipendente e lo stipendio e i premi percepiti.
  2. Modifica i dati della view creata sopra portando lo stipendio di Giuseppe Garibaldi a 80.000 euro, verifica l’avvenuto aggiornamento della view.

Risposte

Tags:

About the Author

Post a Reply

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Top