Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: [mysql]auto_increment

  1. #1
    Utente di HTML.it L'avatar di quincy
    Registrato dal
    Aug 2003
    Messaggi
    247

    [mysql]auto_increment

    Ho una tabella in cui ho un indice autoincrementante e un campo che ho settato a chiave primaria.
    Esempio:
    tabella
    id idArticolo
    1 A1
    2 A2

    Quello che volevo chiedere era se essite una query sql che con un singolo insert mi consenta di inserire un nuovo record nella tabella con idArticolo pari alla concatenazione di 'A' + id.
    Sono conspevole che potrei fare una doppia query ossia trovare l'ultimo indice inserito e fare il concat per comporre il nuovo idArticolo,ma ero curioso di sapere se esisteva un modo più elegante con una singola query.

    Ho provato questo:
    insert into table set idArticolo=concat('A',LAST_INSERT_ID(id)); ma mi inserisce solo A0 e quindi la seconda volta mi dà errore perchè chiave già esistente.

    Grazie a tutti.
    Andrea

  2. #2
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    esempio

    Codice PHP:

    $query 
    "CREATE TABLE utenti (
        id INT UNSIGNED NOT NULL [B]AUTO_INCREMENT[/B] ,
        articolo1 VARCHAR(255) NOT NULL,
        articolo2 CHAR(32) NOT NULL,
        PRIMARY KEY(id),
    );"

    Non usare ASSOLUTAMENTE la doppia query!!!

    ciao

  3. #3
    Utente di HTML.it L'avatar di quincy
    Registrato dal
    Aug 2003
    Messaggi
    247
    Prima di tutto grazie della risposta!
    Forse non mi sono spiegato:
    io vorrei cha quando inserisco un nuovo record nella tabella che ho riportato sopra, il campo idArticolo che è PK mi diventi pari al codice A + l'indice autoincrementale del nuovo record.

    Qualche idea?
    Andrea

  4. #4
    se vuoi fare quella concatenazione devi fare un INSERT seguito da un UPDATE.

    INSERT .....
    UPDATE table set idArticolo = concat('A',id);


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

  5. #5
    Utente di HTML.it L'avatar di quincy
    Registrato dal
    Aug 2003
    Messaggi
    247
    Ciao piero.mac come al solito quando ho problemi con le query mi vieni in aiuto sei mitico
    Purtroppo non ho capito bene:
    nella stessa query devo fare prima un insert e poi un update?
    Ma è possibile farlo?
    potresti farmi un esempio con tutta la query?

    INSERT .....
    UPDATE table set idArticolo = concat('A',id);
    Grazie per a tua risposta.
    Andrea

  6. #6
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768


    Non è bellissimo però è un'idea

    Codice PHP:
    $ultimo mysql_insert_id()+1;

       
    $query "INSERT INTO `Mia_tabella` (`id_Articolo`, `articolo`) 
     VALUES (
       '
    $articolo+$ultimo', '$articolo');"

  7. #7
    Utente di HTML.it L'avatar di quincy
    Registrato dal
    Aug 2003
    Messaggi
    247
    Grazie anche a te per la risposta gasmor ma io volevo sapere se fosse possibile farlo con una sola query!
    Andrea

  8. #8
    Utente di HTML.it L'avatar di quincy
    Registrato dal
    Aug 2003
    Messaggi
    247
    Ho scritto di fretta!
    Una sola query significa che non posso prendere dall'esterno l'ultimo id autoincrementante della tabella, ma vorrei farlo selezionare dal mysql nel momento dell'inserimento del nuovo record!
    Se non è possibile pazienza
    Andrea

  9. #9
    Originariamente inviato da quincy
    Ho scritto di fretta!
    Una sola query significa che non posso prendere dall'esterno l'ultimo id autoincrementante della tabella, ma vorrei farlo selezionare dal mysql nel momento dell'inserimento del nuovo record!
    Se non è possibile pazienza
    Quell'update e' solo una indicazione. Se fai un update senza la condizione where ti aggiorna tutta la tabella. Poco male pero' eccessivo.

    Per fare le cose in modo corretto la procedura e' la seguente, tra l'altro la uso in un paio di casi per formare un codice molto complesso.
    codice:
    INSERT quello che e'.
    $id = mysql_insert_id($link_di_connessione);
    UPDATE tabella SET idArticolo = CONCAT('A','$id') where id = '$id';

    esiste anche la possibilita' di fare una chiave primaria formata da un campo char + id autoincrement. Oppure di concatenare il dato quando lo estrai / valuti.

    SELECT *, concat(idArticolo,id) as codice.....


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

  10. #10
    Utente di HTML.it L'avatar di quincy
    Registrato dal
    Aug 2003
    Messaggi
    247
    Quindi non esiste una semplice query sql che mi consenta di aggiornare quel campo in maniera automatica?
    Devo necessariamente utilizare altre funzioniper esempio (mysql_insert_id)!
    Peccato.
    Avevo pensato che esistesse un comando per recuperare l'ultimo id all'interno della query sql con la quale contemporaneamente inserisco anche il record.
    Grazie comunque!

    Ciao
    Andrea

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 © 2024 vBulletin Solutions, Inc. All rights reserved.