|
Ordinare le Tabelle
Quando è necessario copiare una struttura dati occorre conoscere l'ordine in cui copiare le varie tabelle in base alle loro dipendenze.
Se la struttura dati è stata progettata in modo corretto, le varie tabelle saranno correlate tramite Foreign Keys.
Per poter copiare i dati dalla struttura sorgente a quella destinazione, bisogna seguire l'ordine di dipendenza definito,
onde evitare errori dovuti alla violazione dell'integrità referenziale.
Il codice seguente crea una funzione di tipo TABLE che analizza tutte le tabelle di un DB e genera una lista ordinata secondo le parentele, in modo che copiando
i dati dalla prima tabella all'ultima, non si avranno violazioni delle Foreign Keys.
Ovviamente è possibile modificare le query in modo da restringere l'analisi ad un sottoinsieme di tabelle.
Non vengono utilizzate chiamate ricorsive, ma un ciclo che, procede nella ricerca delle tabelle di un
certo livello per poi passare al successivo, finchè tutte le tabelle non vengono ordinate.
In pratica la procedura non "linearizza" tutte le strutture contenute nel DB, ma si limita ad assicurare che l'ordine di copia per tutte
le tabelle, rispetti l'integrità differenziale.
Il massimo numero di livelli è pari a 32 (il che è più che sufficiente...).
|