Chiave primaria

di il
2 risposte

Chiave primaria

Ciao a tutti, sono molto poco esperto in materia e vorrei delle delucidazioni.
Sto usando per creare le tabelle phpmysql che supporta su altervista non InnoDB ma MyISSAM. Vi do queste informazione nel caso vi servissero.

Ho difficoltà a selezionare le chiavi primarie quando creo le tabelle e quando provo a modificare gl'indici già esistenti.
Supponendo di avere 4 colonne: ID, chatid, username, data. Nel momento della creazione metto id con auto incremento ma non primary key poi chatid e username le metto come primary key. Quando salvo la tabella mi trovo anche ID come primay key e non riesco nemmeno a modificare il valore.
1) Come posso fare?
2)Con INSERT INTO per evitare un inserimento doppio nella tabella devo rispettare tutte le primary key o basta che una sola sia uguale per impedire l'inserimento?
Grazi mille

2 Risposte

  • Re: Chiave primaria

    Nessuno può aiutarmi? Grazie
  • Re: Chiave primaria

    Puoi avere una singola chiave autoincrementante, che tipicamente è posta come primo campo.
    In realtà non mi è chiarissimo perchè la utilizzi, o meglio se sai a cosa serve, come e perchè va usata, eccetera.
    Parliamo di myisam, perchè innodb, se non definisci una chiave primaria, te la mette da solo, "nascosta".

    Quindi, nel tuo caso, la soluzione più banale è usare un indice UNIQUE e una INSERT IGNORE
    Cioè così
    ALTER TABLE ilmiodatabase.lamiatabella ADD UNIQUE INDEX ichebelchebel(nomecampodiscriminante);
    A quel punto, quando farai una INSERT con un nomecampodiscriminante duplicato, otterrai un ERROR 1062 (duplicate entry valore for key ichebelchebel).
    Con una INSERT IGNORE INTO avrai una Query OK, 0 rows affected, 1 warning
Devi accedere o registrarti per scrivere nel forum
2 risposte