Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Primary Key - MySQL

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    369

    Primary Key - MySQL

    salve.

    supponiamo che io abbia un campo nome VARCHAR(255) PRIMARY KEY

    e che in una riga della tabella sia presente nome=gianni

    ora se io provassi nuovamente ad inserire una riga con nome=gianni cosa succede? mi viene restituito un errore o semplicemente non viene effettuata l'operazione?

    ps. l'inserimento lo faccio tramite script in pagina php

  2. #2
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    L'inserimento non viene effettuato e viene restituito un errore che si può anche visualizzare.
    Errare humanum est, perseverare ovest

  3. #3
    Ma sarebbe molto meglio avere una chiave primaria numerica che una chiave primaria varchar(255).

    Per l'unicita' di questo campo varchar sarebbe meglio utilizzare un indice UNIQUE.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    369
    mmm...ma che utilità ho di mettere un campo numerico che non mi serve a nulla quando ogni campo è riconducibile a nome che deve essere unico e non nullo?

  5. #5
    Originariamente inviato da alfa_19
    mmm...ma che utilità ho di mettere un campo numerico che non mi serve a nulla quando ogni campo è riconducibile a nome che deve essere unico e non nullo?
    perche' la chiave primaria "dovrebbe" avere alcune caratteristiche che la ottimizzano. Ne cito alcune:

    1) il contenuto della chiave primaria non dovrebbe avere attinenza con il contenuto del record. Il suo compito e' di identificare un record e non il suo contenuto.
    2) il campo dovrebbe essere composto dallo stesso tipo (char o numerico e se char dello stesso tipo di case upper/lower)
    3) Il campo dovrebbe avere lunghezza prefissata
    4) Il campo non puo' mai essere NULL
    5) Il campo chiave primaria non deve essere mai soggetto di modifiche al suo contenuto.

    ma di regole per la chiave primaria ottimale ce ne sarebbero una decina da rispettare. in soldoni ... l'unico tipo di campo che risponde bene a tutte le caratteristiche richieste per una chiave primaria candidata e' solo il campo numerico auto increment.

    Pensa solo se si dovesse usare un varchar per relazionare delle tabelle. Ovviamente se devi gestire qualche centinaio di record su una sola tabella ti puo' andare bene anche un brano della divina commedia.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    369
    uhm, ok grazie...

    però se metto unique not null ottengo cmq lo stesso errore nel caso del problema citato sopra?

  7. #7
    Originariamente inviato da alfa_19
    uhm, ok grazie...

    però se metto unique not null ottengo cmq lo stesso errore nel caso del problema citato sopra?
    certamente, l'indice UNIQUE e' fatto apposta. Potresti pure definire il campo come case sensitive in modo da differenziare "Pippo" da "pippo".

    Praticamente la chiave primaria identifica uno specifico record (tutti i campi), la chiave UNIQUE il contenuto di uno specifico campo.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    Però mettere UNIQUE su un campo contenente dei nomi non è un gran chè, in caso di omonimia avresti dei problemi.

    Al massimo potrebbe essere utile in caso di utilizzo di username in un'area multiutenza.

    Sei sicuro di questa scelta?
    Errare humanum est, perseverare ovest

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    369
    è proprio quello che mi interessa..siccome i dati non li metterò io, voglio essere sicuro che non ci siano ripetizioni in quel campo

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.