Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    fissare chiave con mysql

    ciao a tutti specifico che mi intendo d programmazione ma in pochissime occasioni ho usato mysql............Detto cio passo a descrivere il mio problema.

    Uso mysql 4.1 e creata una tabella con i campi : nome cognome CodiceFiscale porvo a fissare una chiave su CodiceFiscale ma come risposta ricevo:blob/Text CodiceFiscale used in key specification whithout a key lengt.

    Che cosa vuole dire? come faccio a fissare la chiave su CodiceFiscale. se in mysql non è possibile come mai tutti ne parlano bene???

  2. #2

    Re: fissare chiave con mysql

    Originariamente inviato da binos1979
    se in mysql non è possibile come mai tutti ne parlano bene???
    basta saperlo usare.

    Nell'ordine:
    1) non è sensato memorizzare un codice fiscale su campo blob o text, basta un varchar
    2) il codice fiscale assume valori troppo lunghi per poter essere usati agevolmente come chiave
    3) non può usare un campo text o blob come chiave, può usarne solo una parte (ma è comunque quasi sempre stupido farlo), e in quell'errore ti sta dicendo che se vuoi usarlo come chiave devi specificare la lunghezza in caratteri da usare

    4) usa una chiave numerica come fanno tutti

  3. #3

    scusa l' ignoranza

    ok ......... ma usare il codicefiscale come chiave non significa a priori evitare che una persona si registri 2 volte al portale ?

  4. #4
    ho usato var char e tutto funziona .... grazie per la dritta.
    mi permetto di farti notare nuovamente l' utilità di fissare una chiave sul codice fiscale ................ cio ti consente di non dovere fare faticose operazioni di controllo (come anche nel caso dell' username).

  5. #5

    Re: scusa l' ignoranza

    Originariamente inviato da binos1979
    ok ......... ma usare il codicefiscale come chiave non significa a priori evitare che una persona si registri 2 volte al portale ?
    non è necessario, puoi ottenere lo stesso effetto anche usando una chiave numerica.
    Niente ti vieta infatti di associare un indice UNIQUE al codice fiscale o comunque, in ogni caso, di fare un controllo pre inserimento per evitare duplicati.

  6. #6
    Originariamente inviato da binos1979
    ho usato var char e tutto funziona .... grazie per la dritta.
    mi permetto di farti notare nuovamente l' utilità di fissare una chiave sul codice fiscale ................ cio ti consente di non dovere fare faticose operazioni di controllo (come anche nel caso dell' username).
    Stai sbagliando approccio.

    Se usi il codice fiscale come chiave primaria senza fare controlli in fase di inserimento dovrai comunque gestire l'errore di duplicazione che il mysql ti restituirà.

    Oltre al fatto che importare una chiave così lunga in altre tabelle sarebbe uno spreco assurdo.

    Gestendo invece la situazione a prescindere (controlli se il dato esiste già e agisci di conseguenza), hai un sistema meglio progettato, più efficente e più facile da gestire.

  7. #7
    un CF è un campo CHAR(16) e non un varchar, in questo modo potrebbe anche essere usato meglio come chiave, sarà visto come long e non come int (presumo)

    ciò non toglie quanto detto da skidx, ovvero che questo non garantisce molto, mentre con uno unique ed un id intero agevoli le operazioni in tabella
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.