Quando attivare l’aggiornamento a catena in Access: guida passo passo

Conviene attivare l’aggiornamento a catena in Access quando una chiave sul lato uno di una relazione può davvero cambiare e vuoi che Access aggiorni automaticamente tutti i valori corrispondenti nelle tabelle figlie. Se la chiave primaria è un campo Autonumerazione, l’opzione normalmente non produce alcun vantaggio pratico, perché quel valore non viene modificato manualmente. Il punto non è quindi attivare una casella per sicurezza, ma capire se il modello dati prevede identificatori modificabili e se la propagazione automatica è coerente con il processo aziendale.

Indice

  • Che cos’è l’aggiornamento a catena
  • Quando conviene attivarlo
  • Quando non serve
  • Procedura passo passo
  • Integrità referenziale e tipi dati
  • Esempi pratici
  • SQL di controllo
  • Errori comuni
  • FAQ

Che cos’è l’aggiornamento a catena in Access

In Microsoft Access una relazione descrive il collegamento tra due tabelle, per esempio Clienti e Ordini. La tabella padre contiene la chiave primaria, mentre la tabella figlia conserva una chiave esterna che richiama il record padre. Se l’integrità referenziale è attiva, Access impedisce modifiche che lascerebbero valori senza corrispondenza. L’opzione Aggiorna campi correlati a catena consente invece di modificare la chiave sul lato uno e propagare automaticamente la nuova chiave a tutte le righe correlate sul lato molti.

Microsoft documenta questa funzione per Access desktop in Microsoft 365 e per versioni come Access 2024, 2021, 2019 e 2016. La configurazione si esegue nella finestra Relazioni dell’applicazione desktop Windows. Non esiste un Access desktop nativo per macOS e non bisogna confondere queste procedure con le vecchie Access Web Apps. Access Runtime è pensato soprattutto per eseguire applicazioni già progettate e non è l’ambiente ideale per modificare il modello relazionale.

Quando conviene davvero attivarla

L’aggiornamento a catena è utile quando la chiave utilizzata per identificare il record padre è una chiave naturale o aziendale che può essere rinumerata. Immagina una tabella Fornitori con CodiceFornitore come chiave primaria testuale e una tabella OrdiniAcquisto che memorizza lo stesso codice come chiave esterna. Se FRN-015 deve diventare FRN-2026-015, senza propagazione dovresti aggiornare manualmente ogni ordine collegato oppure temporaneamente disattivare il vincolo. Con l’opzione a catena Access esegue l’aggiornamento in modo coerente.

Un altro scenario è un archivio interno in cui i codici di reparto vengono periodicamente riclassificati. Se Reparti.CodiceReparto è la chiave primaria e Dipendenti.CodiceReparto è la chiave esterna, una rinumerazione può essere propagata senza creare record orfani. La funzione ha senso solo se il cambio della chiave è un requisito reale. Se i codici sono immutabili per definizione, attivarla non risolve alcun problema.

Quando non serve: chiavi Autonumerazione

Nei database Access ben progettati è molto comune usare una chiave primaria Autonumerazione. Clienti.IDCliente, Prodotti.IDProdotto e Ordini.IDOrdine vengono assegnati una volta e non vengono modificati. Microsoft precisa che, se la chiave primaria è Autonumerazione, selezionare Aggiorna campi correlati a catena non ha effetto perché il valore Autonumerazione non può essere cambiato nel normale utilizzo.

Questo è uno dei motivi per cui le chiavi tecniche sono spesso preferibili alle chiavi naturali. Email, numero di telefono, codice fiscale interno, codice cliente commerciale o SKU possono cambiare oppure essere corretti. Un ID tecnico stabile evita che una modifica descrittiva diventi una modifica strutturale. Le informazioni aziendali possono restare indicizzate e univoche quando necessario, ma non devono necessariamente essere la chiave primaria.

Procedura passo passo

  1. Crea una copia di backup del file ACCDB.
  2. Chiudi maschere, query e tabelle che stanno usando gli oggetti coinvolti.
  3. Apri Strumenti database > Relazioni.
  4. Usa Tutte le relazioni se il collegamento non è visibile.
  5. Fai doppio clic sulla linea che collega le tabelle.
  6. Controlla che i campi mostrati siano quelli corretti.
  7. Seleziona Applica integrità referenziale.
  8. Seleziona Aggiorna campi correlati a catena.
  9. Conferma con OK e salva il layout.
  10. Prova la modifica su una copia o su un record non critico.

Non limitarti a verificare che Access accetti l’impostazione. Dopo la modifica, apri le query operative, le maschere e i report che usano le tabelle. Controlla che il nuovo valore sia comparso in tutti i record figli e che nessun oggetto VBA faccia assunzioni sul vecchio codice.

Integrità referenziale: requisito fondamentale

L’aggiornamento a catena lavora insieme all’integrità referenziale. Quest’ultima impedisce record orfani: non puoi inserire nella tabella figlia una chiave esterna che non esiste nella tabella padre e non puoi modificare la chiave primaria lasciando figli collegati al valore precedente. Con l’opzione a catena, Access trasforma una modifica al padre in una modifica coordinata di tutte le chiavi esterne corrispondenti.

Per applicare l’integrità referenziale, il campo sul lato uno deve essere una chiave primaria o avere un indice univoco. I campi collegati devono avere tipi compatibili. L’eccezione classica è Autonumerazione sul lato padre collegata a un campo Numero con Dimensione campo Intero lungo sul lato figlio. Un campo Testo breve contenente cifre non è equivalente a un campo Numero.

Controllare i dati prima di attivare la relazione

Se il database contiene già dati, prima di modificare le opzioni devi cercare eventuali record incoerenti. Una query di non corrispondenza è uno strumento semplice. Per verificare che tutti gli ordini abbiano un cliente valido puoi usare:

SELECT Ordini.IDOrdine, Ordini.IDCliente FROM Ordini LEFT JOIN Clienti ON Ordini.IDCliente = Clienti.IDCliente WHERE Clienti.IDCliente IS NULL;

Se la query restituisce righe, ci sono chiavi esterne prive di un padre valido. Non correggere automaticamente senza capire la causa: potrebbero essere record importati male, anagrafiche eliminate, dati storici o valori digitati manualmente. Decidi se ripristinare il record padre, cambiare la chiave, archiviare il record oppure eliminarlo solo quando la regola aziendale lo permette.

Esempio completo con fornitori

Supponiamo di avere Fornitori con CodiceFornitore Testo breve e chiave primaria, e OrdiniAcquisto con IDOrdine Autonumerazione e CodiceFornitore Testo breve. La relazione è Fornitori.CodiceFornitore 1→∞ OrdiniAcquisto.CodiceFornitore. L’azienda decide di adottare un nuovo standard e trasformare SUP-25 in IT-SUP-0025. Se l’integrità referenziale è attiva senza aggiornamento a catena, Access blocca la modifica perché gli ordini continuerebbero a puntare al vecchio codice.

Con Aggiorna campi correlati a catena attivo, la modifica del codice nella tabella Fornitori aggiorna automaticamente le righe degli ordini collegati. Il vantaggio non è soltanto risparmiare tempo: la modifica è atomica dal punto di vista della coerenza relazionale. Non rimane una fase intermedia in cui alcuni record usano il codice nuovo e altri quello vecchio.

Aggiornamento a catena e chiavi naturali

La necessità frequente di aggiornare chiavi dovrebbe però farti riflettere sulla progettazione. Se il valore è soggetto a revisioni, potrebbe non essere una buona chiave primaria. In molti casi conviene introdurre un ID Autonumerazione come chiave tecnica e conservare il codice aziendale in un campo separato con indice univoco. In questo modo puoi modificare il codice senza toccare i collegamenti tra tabelle.

Questa scelta riduce anche l’impatto su query, maschere, report, esportazioni e integrazioni. Un identificatore tecnico stabile è particolarmente utile quando il database cresce o quando in futuro vuoi spostare il back-end su SQL Server o un’altra piattaforma.

Aggiornamento a catena ed eliminazione a catena non sono la stessa cosa

Aggiorna campi correlati a catena modifica le chiavi esterne quando cambia la chiave primaria. Elimina record correlati a catena, invece, cancella i record figli quando viene eliminato il record padre. La seconda opzione è molto più distruttiva e va valutata separatamente. Non attivare entrambe solo perché sono nella stessa finestra.

Per dati storici come ordini, fatture, movimenti di magazzino o registrazioni di assistenza, spesso l’eliminazione a catena non è appropriata. Potresti preferire un campo Attivo o DataCessazione nella tabella padre, mantenendo lo storico. L’aggiornamento a catena, invece, può essere perfettamente ragionevole se il codice identificativo è realmente modificabile.

Relazioni e query: concetti diversi

Una relazione salvata nella finestra Relazioni descrive il modello del database e può applicare l’integrità. Un join dentro una query stabilisce come combinare tabelle per quella specifica interrogazione. Puoi creare un INNER JOIN o LEFT JOIN anche senza una relazione persistente, ma il join non impedisce di inserire dati incoerenti nelle tabelle.

Una relazione corretta aiuta Access a proporre automaticamente i join nelle nuove query. Se ottieni duplicati inattesi, però, non usare DISTINCT come prima soluzione: controlla la cardinalità. Duplicati possono indicare che hai collegato un campo non univoco sul lato che pensavi fosse uno.

Come verificare duplicati sul lato uno

Prima di trasformare un campo in chiave o indice univoco puoi cercare duplicati con una query di raggruppamento:

SELECT CodiceFornitore, Count(*) AS Quanti FROM Fornitori GROUP BY CodiceFornitore HAVING Count(*) > 1;

Se compaiono risultati, il campo non può rappresentare univocamente il lato uno finché non correggi i dati. Decidi quale record è quello corretto, aggiorna le chiavi esterne e rimuovi o unisci i duplicati in modo controllato.

Access Microsoft 365 e Access 2024

La procedura descritta è valida nell’app desktop Access su Windows. Le pagine Microsoft correnti sulla creazione e modifica delle relazioni indicano Access per Microsoft 365, Access 2024, 2021, 2019 e 2016. La grafica della barra multifunzione può cambiare leggermente, ma la logica è la stessa. La scelta tra Office a 32 e 64 bit non cambia il funzionamento dell’integrità referenziale; è rilevante soprattutto per driver, componenti ActiveX, API e compatibilità VBA.

Access Runtime può eseguire un’applicazione distribuita ma non va considerato l’ambiente di progettazione. Le modifiche strutturali vanno eseguite nella versione completa da chi mantiene il database.

Database multiutente

Se più persone usano il database, è consigliabile separare front-end e back-end. Il back-end contiene le tabelle condivise; ogni utente usa una copia locale del front-end con maschere, query, report e codice. L’integrità referenziale tra tabelle Access va definita nel file che contiene fisicamente le tabelle. Non aspettarti che una semplice relazione grafica nel front-end sostituisca i vincoli del back-end.

Le modifiche alla struttura dovrebbero essere eseguite quando gli utenti non stanno lavorando. Crea un backup, documenta la modifica e distribuisci eventuali aggiornamenti del front-end dopo aver verificato che query e maschere siano ancora compatibili.

Troubleshooting: Access non permette di attivare l’opzione

Se la casella non può essere applicata, controlla in ordine: il campo padre è davvero una chiave primaria o un indice univoco? I due campi hanno tipi compatibili? Esistono record figli senza padre? Le tabelle sono aperte? Sono tabelle locali nello stesso database o tabelle collegate il cui vincolo deve essere definito nel database sorgente? Il campo sul lato uno contiene duplicati?

Se il padre è Autonumerazione e il figlio è Numero, verifica che Dimensione campo del figlio sia Intero lungo. Se il database deriva da Excel, controlla che Access non abbia importato alcuni ID come testo. Una conversione di tipo su dati reali va sempre preceduta da una copia di sicurezza.

Importazioni da Excel e rinumerazioni

Un caso comune è importare listini o anagrafiche da Excel con codici che cambiano nel tempo. Non usare direttamente quei codici come chiavi primarie senza valutarne stabilità e unicità. Se il foglio contiene CodiceCliente e quel codice viene periodicamente rinumerato, un IDCliente Autonumerazione può rendere il modello più robusto. Il codice rimane un attributo aziendale modificabile.

Se devi mantenere la chiave naturale per compatibilità con sistemi esterni, l’aggiornamento a catena può diventare utile. Documenta però chi è autorizzato a cambiare il codice e quali sistemi esterni devono ricevere l’aggiornamento.

VBA e gestione degli errori

Il codice VBA non dovrebbe aggirare l’integrità referenziale. Può invece gestire gli errori e mostrare messaggi comprensibili. Una maschera può impedire all’utente di modificare una chiave quando la modifica non è prevista, oppure chiedere una conferma quando l’operazione ha un impatto ampio. Se usi query di aggiornamento, testale prima come query di selezione equivalente e lavora su una copia.

Una buona regola è non affidare al VBA ciò che il motore dati può garantire direttamente. La relazione protegge i dati anche quando vengono modificati da una query diversa da quella prevista dalla maschera.

Test di regressione dopo l’attivazione

Dopo aver attivato l’aggiornamento a catena, crea un record padre di prova e alcuni figli. Modifica la chiave e verifica che tutte le chiavi esterne cambino. Esegui poi le query principali, apri le maschere e genera i report. Se esistono esportazioni verso Excel o integrazioni, controlla che non dipendano dal vecchio codice.

Ripeti il test con più livelli di relazioni se il database è complesso. Una modifica può propagarsi attraverso più oggetti applicativi anche quando la relazione interessata è una sola. Documenta i risultati e conserva una copia precedente del database finché non hai verificato il comportamento in produzione.

Come documentare la scelta

Annota tabella padre, tabella figlia, campi collegati, cardinalità, integrità referenziale e motivazione dell’aggiornamento a catena. Per esempio: “Fornitori.CodiceFornitore → OrdiniAcquisto.CodiceFornitore, uno-a-molti, integrità attiva, aggiornamento a catena attivo perché il codice può essere rinumerato”. Questa frase è molto più utile di una semplice schermata.

Access consente anche di preparare un Relationship Report dalla finestra Relazioni e dispone del Database Documenter per raccogliere proprietà degli oggetti. La documentazione facilita manutenzione e migrazioni future.

FAQ

L’aggiornamento a catena è obbligatorio?

No. È opzionale e serve solo quando vuoi consentire la modifica della chiave primaria propagandola ai record correlati.

Serve con una chiave Autonumerazione?

Normalmente no. Microsoft specifica che l’opzione non ha effetto se la chiave primaria è Autonumerazione, perché quel valore non viene modificato.

Può perdere dati?

Non elimina record, ma modifica valori di chiave in più righe. Un backup resta indispensabile prima di cambiamenti strutturali o rinumerazioni massive.

Posso usarlo con tabelle collegate?

L’integrità va gestita nel database o sistema che ospita fisicamente le tabelle. Per tabelle Access collegate, apri il back-end e definisci lì le relazioni.

È disponibile su Mac?

Access desktop non è disponibile nativamente per macOS. Questa procedura riguarda Windows.

Collegamenti utili

Consulta sempre la categoria Guide Access. Approfondisci con come creare relazioni tra tabelle in Access, come applicare l’integrità referenziale, come creare una tabella ponte e perché la chiave primaria è importante.

Fonti ufficiali: Microsoft Support: creare, modificare o eliminare una relazione e Microsoft Support: guida alle relazioni tra tabelle.

Conclusione

Quando attivare l’aggiornamento a catena in Access? Attivalo quando una chiave primaria modificabile deve essere sincronizzata automaticamente con tutte le chiavi esterne correlate. Non considerarlo necessario se usi chiavi Autonumerazione stabili. La progettazione migliore resta quella che minimizza le modifiche agli identificatori: chiavi tecniche stabili, tipi di dati compatibili, integrità referenziale e controlli sui dati sono la base di un database Access affidabile.

Lascia un commento