Come ripristinare ID corretto?

di il
14 risposte

Come ripristinare ID corretto?

Tempo fa convertii un DB di Access nella versione 2003 che uso attualmente, soltanto a distanza di tempo mi accorsi che il contenuto dei campi ID delle tabelle principali, e soltanto quelle, dalla data della conversione in poi non rispettava più la sequenza precedente ma aveva fatto un salto di decine di migliaia, centinaia di migliaia o addirittura milioni, da lì in poi tutto procedeva regolarmente incrementando di uno ogni nuovo record.

Questa nuova ed incomprensibile numerazione non ha avuto nessun effetto sulla procedura e tutto ha continuato a funzionare regolarmente come prima.

Mi sto chiedendo se è possibile e come ripristinare la numerazione originaria.
Tenendo ben presente che gli ID dovranno poi essere sostituiti anche nelle relative tabelle di collegamento uno-a-molti e molti-a-molti.

Grazie a chi saprà darmi indicazioni utili.

14 Risposte

  • Re: Come ripristinare ID corretto?

    Credo che non potrai ripristinare la stessa identica numerazione originale, ma, se ti danno fastidio quei vistosi salti, ti consiglio di leggere questo
  • Re: Come ripristinare ID corretto?

    Ciao Osvaldo, grazie del link, lo consulterò attentamente poi ti dirò.
  • Re: Come ripristinare ID corretto?

    OsvaldoLaviosa ha scritto:


    Credo che non potrai ripristinare la stessa identica numerazione originale, ma, se ti danno fastidio quei vistosi salti, ti consiglio di leggere questo
    Letto e riletto, dettagliato, preciso e sicuramente utile, ma per il momento il tuo "se" ha avuto il sopravvento.
  • Re: Come ripristinare ID corretto?

    In quelle note si parla di tabelle singole o di tabelle madre e figlia/e, partendo sempre dal presupposto che sia da sostituire l'ID della tabella madre e conseguentemente lo stesso ID presente nelle tabelle figlie.

    Come ci si deve comportare nel caso in cui l'ID da sostituire sia soltanto quello di una tabella figlia, si adotta la procedura 1?
  • Re: Come ripristinare ID corretto?

    Forse ti riferisci a una tabella che rappresenta l'ultimo ramo di una serie di relazioni. Tale tabella avrà un campo ID chiave primaria non legato ad altra tabella. Sì, vale la procedura 1.
  • Re: Come ripristinare ID corretto?

    Mi sembra proprio lo stesso problema... ma veramente molto molto simile...
  • Re: Come ripristinare ID corretto?

    In realtà è possibile, anche "reimpacchettare" (cioè senza buchi) i numeratori.
    Con Access non ti so dire, "senza" sicuramente sì.
    Ma la domanda (il "se") sorge spontanea.
    Posto che usare campi autoincrementanti in questo modo non è esattamente lungimirante, soprattutto nel caso della necessità di effettuare manutenzione, cosa ti turba, esattamente?
    Il mero aspetto "estetico" ?
  • Re: Come ripristinare ID corretto?

    +m2+ ha scritto:


    In realtà è possibile, anche "reimpacchettare" (cioè senza buchi) i numeratori.
    Con Access non ti so dire, "senza" sicuramente sì.
    Ma la domanda (il "se") sorge spontanea.
    Posto che usare campi autoincrementanti in questo modo non è esattamente lungimirante, soprattutto nel caso della necessità di effettuare manutenzione, cosa ti turba, esattamente?
    Il mero aspetto "estetico" ?
    Con Access gli AutoIncrementali si AUTORESETTANO se si Compatta il DB con Tabella VUOTA, quindi basta clonarla, vuotarla e di conseguenza fare un INSERT... ovviamente questo se la Tabella non ha Relazioni, altrimenti diventa un pochetto più complesso ma ovviamente fattibilissimo.
    La non conoscenza del FieldType, e forse di altro, sicuramente fa nascere la preoccupazione...
    In questi casi effettivamente si evidenzia ancora maggiormente il limite dell'autoincrementale... ma per DB casalinghi ha una comodità notevole.
  • Re: Come ripristinare ID corretto?

    @Alex ha scritto:


    Con Access gli AutoIncrementali si AUTORESETTANO se si Compatta il DB con Tabella VUOTA, quindi basta clonarla, vuotarla e di conseguenza fare un INSERT... ovviamente questo se la Tabella non ha Relazioni, altrimenti diventa un pochetto più complesso ma ovviamente fattibilissimo.
    La non conoscenza del FieldType, e forse di altro, sicuramente fa nascere la preoccupazione...
    In questi casi effettivamente si evidenzia ancora maggiormente il limite dell'autoincrementale... ma per DB casalinghi ha una comodità notevole.
    Intendevo ovviamente rinumerare la/le chiavi primarie con relazioni.
    Non so dire per Access; per SQLserver talvolta è difficile, quando non impossibile (in presenza di vincoli, soprattutto di quelli autogenerati dai vari case).
    Per un db "casalingo"... lascerei stare.
    Prima legge dell'informatica: finchè funziona, lascialo stare.
    Seconda legge: il meglio è nemico del bene
  • Re: Come ripristinare ID corretto?

    MTAccess ha scritto:


    Come ci si deve comportare nel caso in cui l'ID da sostituire sia soltanto quello di una tabella figlia, si adotta la procedura 1?

    OsvaldoLaviosa ha scritto:


    Forse ti riferisci a una tabella che rappresenta l'ultimo ramo di una serie di relazioni. Tale tabella avrà un campo ID chiave primaria non legato ad altra tabella. Sì, vale la procedura 1.
    Non necessariamente, può essere semplicemente una tabella figlia legata ad una tabella madre da un legame uno a molti, nella quale si pensa di ripristinare la numerazione sequenziale originaria.

    Grazie di nuovo per il tuo chiarimento.
  • Re: Come ripristinare ID corretto?

    @Alex ha scritto:


    Mi sembra proprio lo stesso problema... ma veramente molto molto simile...
    Verissimo, evidentemente non è successo soltanto a me.

    Interessante questo link http://allenbrowne.com/ser-40.htm riportato nella discussione.
  • Re: Come ripristinare ID corretto?

    +m2+ ha scritto:


    In realtà è possibile, anche "reimpacchettare" (cioè senza buchi) i numeratori.
    Con Access non ti so dire, "senza" sicuramente sì.
    Ma la domanda (il "se") sorge spontanea.
    Posto che usare campi autoincrementanti in questo modo non è esattamente lungimirante, soprattutto nel caso della necessità di effettuare manutenzione, cosa ti turba, esattamente?
    Il mero aspetto "estetico" ?
    Bella domanda!
    Da quello che ho letto, so che il DB può continuare a lavorare senza dare nessun problema, così come lo sta già facendo da anni.
    Purtroppo, conoscendomi, so che prima o poi farò anche questa manutenzione
  • Re: Come ripristinare ID corretto?

    @Alex ha scritto:


    In questi casi effettivamente si evidenzia ancora maggiormente il limite dell'autoincrementale... ma per DB casalinghi ha una comodità notevole.
    Questa non l'ho capita, vuoi provare a spiegarmela?
  • Re: Come ripristinare ID corretto?

    +m2+ ha scritto:


    Per un db "casalingo"... lascerei stare.
    Prima legge dell'informatica: finchè funziona, lascialo stare.
    Seconda legge: il meglio è nemico del bene
    M2, vedo che anche la saggezza ha il suo peso in un forum
Devi accedere o registrarti per scrivere nel forum
14 risposte