Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    514

    Creare numero identificazione unico.

    Ciao

    Avendo un database che registra gli utenti, gli assegno un campo ID numerico incrementale e che non sia duplicato.

    Quando inserisco gli utenti, il database automaticamente controlla se ci sono degli id uguali o devo farlo io ?

    Ho bisogno di assegnare ad ogni utente un ID diverso da tutti, ma mi conviene generarlo e poi controllare nel database, cosi da rigenerarne un'altro nel caso esista e poi ricontrollare di nuovo ?


    Come si fà ?

    :master:

  2. #2
    Se il campo in questione è un contatore con autoincremento, ci penserà tutto lui. E' la tecnica più prestazionale e semplice.

    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    514
    Originariamente inviato da AndreaZani
    Se il campo in questione è un contatore con autoincremento, ci penserà tutto lui. E' la tecnica più prestazionale e semplice.
    OK però se poi cancello degli utenti cosa succede ?

    1
    2
    3
    4
    5
    6

    cancello 3 e 5 resta ?

    1
    2
    4
    6

    poi continua con 7 8 9 e non utilizza + il 3 e 5 ?

  4. #4
    Esatto. Gli identificatori dei record cancellati non vengono più utilizzati.

    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

  5. #5
    Utente di HTML.it L'avatar di xcs
    Registrato dal
    Mar 2001
    Messaggi
    123
    Originariamente inviato da Lollys
    OK però se poi cancello degli utenti cosa succede ?

    1
    2
    3
    4
    5
    6

    cancello 3 e 5 resta ?

    1
    2
    4
    6

    poi continua con 7 8 9 e non utilizza + il 3 e 5 ?
    Esatto, funziona proprio così

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    514
    Ok però ultima cosa.

    Il database sarà un SQL nel server e non un file Access, sò che si può (parlo di Access in SQL devo ancora vedere) compattare il database, o riordinare, non è che poi mi riordina tutti i numeri dall'1 in su ripartendo da 0 spostandomi tutti gli ID utilizzando anche quelli eliminati ?

    Oppure è una funzione che non serve ad una mazza ? :master:

    Sinceramente non sò se catalogare per Username o ID

  7. #7
    Non so se esiste un comando per compattare il database SQL server, ma in quel caso gli ID non te li tocca! Eventuali referenze tra tabelle sarebbero compromesse.

    Se utilizzi userid univoci ricordati di mettere questo campo come "indice". In caso utilizzi questo campo come campo univoco devi solo accertarti, prima dell'inserimento, se esiste già quel dato.

    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    514
    Beh gli Username li devo controllare per forza, quindi a questo punto non conviene aggiungere un campo ID al database ma utilizzare il nome utente.

    Bah

  9. #9
    Se l'id non ti serve perché metterlo? Usa come campo univoco l'username con tanto di indice per l'aumento di prestazioni.

    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

  10. #10
    un'altra tecnica (che io preferisco) è usare il generatore di id del framework, anzichè affidarmi ai contatori di un db.
    per ottenere una chave univoca puoi usare l'oggetto System.Guid di .Net:

    System.Guid guid = System.Guid.NewGuid();
    String id = guid.ToString();

    il risultato è una stringa che ha quest'aspetto:
    "b91c9121-0a17-4b26-a09d-d5980eb532db"

    e così te lo salvi in un campo string del db e lasci le logiche all'applicazione e non al db.

    questo è anche comodo nel caso di una INSERT, in quanto sai prima di fare l'inserimento qual'è il valore della chiave del db, e se ti serve poi tenere traccia dell'id inserito sai già qual'è senza fare una select successiva per ottenerlo.

    Microsoft garantisce che è praticamente impossibile che il framework generi due Guid identici.
    bah, sarà...comunque a me non è ancora mai successo e l'ho già usato abbastanza pesantemente...

    ciao!
    If you want a picture of the future, imagine a boot stamping on a human face-for ever.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.