Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente | ||
gwtipstricks:idxtipstricks:appuntipostgres [2020/09/11 16:46] giovanni.bifolchi |
gwtipstricks:idxtipstricks:appuntipostgres [2020/09/11 17:03] (versione attuale) giovanni.bifolchi |
||
---|---|---|---|
Linea 50: | Linea 50: | ||
- | ===== Modifiche su oggetti con dipendenze ===== | + | ===== Modifiche di oggetti con dipendenze ===== |
==== Introduzione ==== | ==== Introduzione ==== | ||
- | Questa funzione permette di velocizzare le generose dipendenze di PostgreSQL. | + | Questa funzione permette di velocizzare il ripristino di oggetti che dipedenvano da altri e bloccavano quindi la modifica della fonte. |
- | Per spiegare meglio "dipendenze", vi pongo un esempio: avete presente quando dovete modificare il data type di un campo in una tabella ma non potete perché questa ha delle viste che dipendono da essa? | + | Per spiegare meglio //"dipendenze"//, vi pongo un esempio: avete presente quando dovete modificare il //data type// di un campo in una tabella ma non potete perché questa ha delle viste che dipendono da essa? |
Oppure, dovete modificare una vista ma non potete perché questa ha altre viste dipendenti. Insomma, credo di aver reso bene l'idea. | Oppure, dovete modificare una vista ma non potete perché questa ha altre viste dipendenti. Insomma, credo di aver reso bene l'idea. | ||
- | Senza questa funzione, si dovrebbe fare tutto a mano: salvare lo script della vista, eliminare la vista, modificare il campo e ricreare la vista. <br> Diciamo che finché si tratta di una vista il problema non si pone, ma quando, ci sono più di 10 viste dipendenti dalla tabella? | + | Senza questa funzione, si dovrebbe fare tutto a mano: salvare lo script della vista, eliminare la vista, modificare il campo e ricreare la vista. Diciamo che finché si tratta di una vista il problema non si pone, ma quando, ci sono più di 10 viste dipendenti dalla tabella? |
Bene, qui entra in gioco la funzione di cui vi parlavo. Lo script non impedisce a PostgreSQL di generare dipendenze, perché queste sono una funzionalità efficace del software e ci aiutano a mantenere un prodotto funzionante, ma aiuta l'utente a risparmiare tempo nel ricreare tutte le viste (o altre dipendenze) a mano. | Bene, qui entra in gioco la funzione di cui vi parlavo. Lo script non impedisce a PostgreSQL di generare dipendenze, perché queste sono una funzionalità efficace del software e ci aiutano a mantenere un prodotto funzionante, ma aiuta l'utente a risparmiare tempo nel ricreare tutte le viste (o altre dipendenze) a mano. | ||
| | ||
- | Dunque, la funzione che vi consiglio oggi salva, con un click, tutti gli script che ricreano le viste (o altre dipendenze) e con un altro le rigenera. | + | Dunque, la funzione che vi consiglio salva, con un click, tutti gli script che ricreano le viste (o altre dipendenze) e con un altro le rigenera. |
Il tutto senza uscire dall'interfaccia di Pgadmin, poiché si tratta di una funzione che si crea nel database. | Il tutto senza uscire dall'interfaccia di Pgadmin, poiché si tratta di una funzione che si crea nel database. | ||
==== Installazione ==== | ==== Installazione ==== | ||
- | Se vi interessa, potete scaricare la cartella condivisa via mail ed eseguire lo script su Pgadmin, contenuto nel file: ''Edit_4_gw_save_restore_dependencies_psql.sql'' | + | |
- | Questo non farà altro che creare: | + | === Requisiti === |
- | * una tabella, dove verranno salvate le dipendenze, chiamata: deps_saved_ddl | + | * PgAdmin |
- | * una funzione che salva (nella tabella) e cancella (dal database) le dipendenze di uno specifico oggetto: deps_save_and_drop_dependencies | + | * {{ :gwtipstricks:idxtipstricks:dipendenze_postgresql.zip |}} |
- | * una funzione che ripristina le dipendenze, di uno specifico oggetto, nel database (prendendole dalla tabella in cui le avete salvate con lo script precedente): deps_restore_dependencies | + | |
+ | Scaricare la cartella condivisa ed eseguire lo script su Pgadmin, contenuto nel file: ''Edit_4_gw_save_restore_dependencies_psql.sql'' | ||
+ | |||
+ | Questo script genera: | ||
+ | * ''deps_saved_ddl'': tabella dove verranno salvate le dipendenze; | ||
+ | * ''deps_save_and_drop_dependencies'': funzione che salva (nella tabella) e cancella (dal database) le dipendenze di un oggetto specificato; | ||
+ | * ''deps_restore_dependencies'': funzione che ripristina le dipendenze nel database, di un oggetto specificato, prendendole dalla tabella in cui sono state salvate con la funzione precedente. | ||
Se vi interessano altre informazioni potete anche leggere il file: ''ReadMe.txt'', che avevo personalmente scritto. | Se vi interessano altre informazioni potete anche leggere il file: ''ReadMe.txt'', che avevo personalmente scritto. | ||
Linea 94: | Linea 100: | ||
=== Possibili Problemi === | === Possibili Problemi === | ||
- | Va specificato un possibile problema: la funzione non fa magie, ma riscrive semplicemente gli script che dipendono da un oggetto al posto vostro. | + | Va specificato un possibile problema: la funzione non fa //magie//, ma riscrive semplicemente gli script che dipendono da un oggetto al posto vostro. |
- | Quindi se avete una tabella dove avete un campo character varying e necessitate di trasformarlo in un numeric, state bene attenti che le viste dipendenti non abbiano alcuna: "where a = b", dove a è il campo che volete modificare ( character varying) e b un altro campo character varying. Altrimenti, se avete fatto la modifica, dopo aver eseguito la funzione di ripristino delle dipendenze potreste beccarvi l'errore: ERROR: ERRORE: l'operatore non esiste: numeric = character varying. | + | Quindi se avete una tabella dove avete un campo character varying e necessitate di trasformarlo in un numeric, state bene attenti che le viste dipendenti non abbiano alcuna: "where X = Y", dove X è il campo che volete modificare (character varying) e Y un altro campo character varying. Altrimenti, se avete fatto la modifica, dopo aver eseguito la funzione di ripristino delle dipendenze potreste beccarvi l'errore: |
- | C'è comunque non modo per risolverlo, basterà entrare nella tabella deps_saved_ddl, cercare la riga dove si trova lo script della vista incriminata e modificarla manualmente, ossia togliendo quella where o modificandola in modo da farla funzionare. Insomma nulla di impossibile ma fa sempre bene saperlo. | + | <code sql>ERROR: ERRORE: l'operatore non esiste: numeric = character varying</code> |
+ | C'è comunque non modo per risolverlo, basterà entrare nella tabella ''deps_saved_ddl'', cercare la riga dove si trova lo script della vista incriminata e modificarla manualmente, ossia togliendo quella where o modificandola in modo da farla funzionare. Insomma nulla di impossibile ma fa sempre bene saperlo. | ||