Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [MySQL] autoincremente

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    417

    autoincremente

    ho bisogno di inserire due autoincrement indipendenti in una tabella mysql, è possibile? come si fà?
    devo mettere i campi ID autoincrement ed un campo pratica che si autoincrementi.
    grazie Luigi

  2. #2
    "indipendenti" che vuol dire?

  3. #3
    L'attributo AUTO_INCREMENT è usato per generare un identificatore UNICO per una nuova riga.

    Se non ricordo male non ne puoi mettere due in una tabella.

    E poi il campo pratica che formato ha? E' solo un intero? Usa lo stesso valore del campo ID
    "640K dovrebbero essere sufficienti per chiunque"
    www.informaticanetworking.it

  4. #4
    è possibile inserirne uno solo, ma se ti serve "simularlo" puoi fare

    codice:
    INSERT INTO
        tabella
    
    (
        id1, /** campo autoincrement **/
        id2
    )
    
    VALUES
    (
        NULL, /** forzo la generazione di un nuovo valore **/
        (SELECT MAX(tbl.id2) FROM tabella AS tbl)
    )
    detto questo, maggiore attenzione ai titolo e soprattutto al regolamento! Va indicata la piattaforma con la quale si sta lavorando!
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da daniele_dll
    è possibile inserirne uno solo, ma se ti serve "simularlo" puoi fare

    codice:
    INSERT INTO
        tabella
    
    (
        id1, /** campo autoincrement **/
        id2
    )
    
    VALUES
    (
        NULL, /** forzo la generazione di un nuovo valore **/
        (SELECT MAX(tbl.id2) FROM tabella AS tbl)
    )
    detto questo, maggiore attenzione ai titolo e soprattutto al regolamento! Va indicata la piattaforma con la quale si sta lavorando!
    così non c'è garanzia che non vi siano stati nuovi inserimenti.

    Il metodo "pulito" è creare un trigger che, dopo aver inserito la riga, prenda l'ultimo SER ed aggiorni di conseguenza la tabella2

  6. #6
    non c'è garanzia nemmeno con il trigger (non ne uso, ma non credo facciano un lock in auto della tabella ... oppure si?)

    l'unico modo per avere una garanzia cerca è loccare la tabella
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  7. #7
    Originariamente inviato da daniele_dll
    non c'è garanzia nemmeno con il trigger (non ne uso, ma non credo facciano un lock in auto della tabella ... oppure si?)

    l'unico modo per avere una garanzia cerca è loccare la tabella
    ne convengo.

    Ma mi pare che la richiesta di luigi45 sia ancora diversa, non vuole "lo stesso" valore ma due valori autoincrementanti e indipendenti tra loro e quindi con sequenze di incremento anche, anzi, sicuramente diverse.

    Altrimenti sarebbe solo un campo duplicato senza senso.

    Forse potrebbe risolvere con un indice auto increment su due campi. Ma non dice a che gli serve.

    @ Luigi45 -> http://dev.mysql.com/doc/refman/5.0/...increment.html

    in questo caso avresti un autoincrement nome-id dove l'incremento avviene selettivo, nome per nome.

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

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da daniele_dll
    non c'è garanzia nemmeno con il trigger (non ne uso, ma non credo facciano un lock in auto della tabella ... oppure si?)

    l'unico modo per avere una garanzia cerca è loccare la tabella
    c'è garanzia, se riprendi l'ultimo ser che è stato inserito con la relativa funzione mysql LAST_INSERT_ID(), in quanto è riferito alla connessione mysql (client)

    Using LAST_INSERT_ID() and AUTO_INCREMENT columns simultaneously from multiple clients is perfectly valid. Each client will receive the last inserted ID for the last statement that client executed.

    altrimenti no, non c'è garanzia.
    ---
    Riguardo al perchè avere due campi autoincrementanti nella stessa tabella... non so, per me uno è già troppo

  9. #9
    Originariamente inviato da franzauker
    c'è garanzia, se riprendi l'ultimo ser che è stato inserito con la relativa funzione mysql LAST_INSERT_ID(), in quanto è riferito alla connessione mysql (client)

    Using LAST_INSERT_ID() and AUTO_INCREMENT columns simultaneously from multiple clients is perfectly valid. Each client will receive the last inserted ID for the last statement that client executed.
    avere due valori autoincremente ASSOLUTAMENTE identici non ha ne senso ne utilità e non credo chiedesse questo ... lui chiedeva come avere un secondo campo che si incrementasse da solo e, anche se non ha dato ulteriori dettagli, ci sono poche cose a cui può servire e, tra tutte, a mantenere un progressivo in certi contesti.

    se ad esempio hai una data informazione e vuoi tenere lo storico nella tabella, assegni un progressivo ad ogni record e, quindi, ti serve un secondo "autoincrement".

    se alla query che ho postato ci metti un where hai un progressivo che dipende da N fattori ovvero dall'informazione stessa

    poi, se da qualche dettaglio ulteriore sarebbe cosa ottima, ma .....
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  10. #10
    in ogni caso, si può avere un solo campo AUTO_INCREMENT ed esso deve necessariamente essere una chiave primaria...

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